nomelodic/file-system-security
Composer 安装命令:
composer require nomelodic/file-system-security
包简介
The library creates a snapshot of the project file system and calculates the checksum.
README 文档
README
Многие сайты подвергаются взлому, и очень часто владельцы сайтов узнают об этом не сразу. Безусловно, для избежания подобного необходимо обеспечить безопасность сайта должным образом, убирать все дыры, проверять входящие данные и т.д. Но далеко не всегда разработчику удаётся это сделать, т.к. в проектах очень часто используются пакеты, плагины, расширения и пр. подобные вещи сторонних разработчиков. Уязвимости могут быть в любом месте.
Библиотека создает слепок файловой системы проекта и считает контрольную сумму. Это необходимо для контроля несанкционированных изменений файлов веб-проекта. Суть работы скрипта очень проста: один инструмент сканирует систему и сохраняет информацию о её состоянии, после другой сканирует систему на наличие изменений, сравнивая состояние в момент проверки с сохраненным.
Установка
composer require nomelodic/file-system-security
Использование
Объявляем класс и передаем массив с настройками.
$security = new FilesSecurity([
'baseDir' => __DIR__,
'include' => ['f|*.php'],
'includeMerge' => ['d|*.js'],
'exclude' => ['f|sitemap.xml'],
'excludeMerge' => ['d|vendor'],
'callback' => function ($status, $diff) {
/* Здесь выполняем необходимые действия */
}
]);
Конфигурация
baseDir string required - Корневая директория проекта. Это та директория, внутри которой будет собираться список файлов.
Списки для обхода
include array - Массив со списком масок и названий файлов и папок, которые участвуют в обходе. Заменяет дефолтный список.
includeMerge array - Массив со списком масок и названий файлов и папок, которые участвуют в обходе. Объединяется с дефолтным списком.
exclude array - Массив со списком масок и названий файлов и папок, которые не участвуют в обходе. Заменяет дефолтный список.
excludeMerge array - Массив со списком масок и названий файлов и папок, которые не участвуют в обходе. Объединяется с дефолтным списком.
Обратите внимание! В парах include | includeMerge и exclude | excludeMerge указывается что-то одно, т.е. либо include, либо includeMerge и, соотвественно, либо exclude, либо excludeMerge.
По-умолчанию у класса есть дефолтные списки:
$include = ['f|*.php', 'f|*.html', 'f|.env', 'f|.htaccess', 'f|*.sh', 'f|*.bat'];
$exclude = ['d|.git', 'd|.idea', 'd|.buildpath', 'd|.project', 'd|.settings'];
Свои списки необходимо передавать в таком же виде. Каждый элемент списка состоит из двух частей, разделенных |: тип файла (f - файл или d - папка) и название файла (полное или маска). На данный момент маска принимает только *, т.е. не работает, как полноценное регулярное выражение.
Список файлов и папок, участвующих в обходе:
f|*.php // Все файлы с расширением .php
f|*.html // Все файлы с расширением .html
f|.env // Все файлы с именем .env
f|.htaccess // Все файлы с именем .htaccess
f|*.sh // Все файлы с расширением .sh
f|*.bat // Все файлы с расширением .bat
Список файлов и папок, не участвующих в обходе:
d|.git // Папка с именем .git и все дочерние элементы
d|.idea // Папка с именем .idea и все дочерние элементы
d|.buildpath // Папка с именем .buildpath и все дочерние элементы
d|.project // Папка с именем .project и все дочерние элементы
d|.settings // Папка с именем .settings и все дочерние элементы
Callback-функция
callback callable - Функция, которая будет вызвана при завершении обхода. Принимает 2 параметра: $status и $diff.
function ($status, $diff) {
/* Здесь выполняем необходимые действия */
}
$status bool - Возвращает результат проверки контрольной суммы.
$diff array - Возвращает список измененных файлов, если результат проверки false.
Методы
Для работы используются 2 метода:
scan void - Производит сканирование системы и сохраняет слепок. Вызов:
$security->scan();
По итогу обхода создает файл fs_checksum, в котором сохраняет состояние системы.
check array|callable - Проверяет систему на наличие изменений. Также дополнительно проверяет созданные и измененные файлы на наличие нежелательных вхождений. Вызов:
$security->check();
Если в настройках была передана функция callback, то выполнит её, иначе вернет ассоциативный массив с теми же параметрами, которые передаются в функцию:
[
'status' => true|false, // Результат проверки контрольной суммы
'diff' => [...] // Список измененных файлов
]
Пример возвращаемых данных в массиве $diff:
[
'created' => [ // Список созданных (новых) файлов
'index.html' => [
'new' => [ // Новые значения
'modified' => 1611595416, // Время последнего изменения в UNIX-формате
'size' => 128832, // Размер в байтах
'warnings' => [] // Нежелательных вхождений не обнаружено
],
]
],
'modified' => [ // Список измененных файлов
'controllers/SiteController.php' => [
'old' => [ // Старые значения
'modified' => 1611591377, // Время последнего изменения в UNIX-формате
'size' => 47565 // Размер в байтах
],
'new' => [ // Новые значения
'modified' => 1611598416, // Время последнего изменения в UNIX-формате
'size' => 47832, // Размер в байтах
'warnings' => [ // Список нежелательных вхождений
'key' => 'file_put_contents',
'string' => '...nclude ], 'list' => $files ]; file_put_contents($this->getChecksumPath(), jso...'
'offset' => 1930
]
],
]
],
'deleted' => [ // Список удаленных файлов
'.htaccess' => [
'old' => [ // Старые значения
'modified' => 1565950550, // Время последнего изменения в UNIX-формате
'size' => 84 // Размер в байтах
],
]
]
]
Расшифровка данных по нежелательным вхождениям:
key string - Вхождение. На данный момент обозначены:
private $warnings = [
'exec',
'chmod',
'mkdir',
'file_put_contents',
'fwrite',
'$GLOBAL',
'base64_decode',
'getenv',
'set_time_limit',
'rmdir',
'mail',
'curl_init',
'header',
];
string string - Часть строки из файла, где найдено вхождение
offset int - Смещение от начала файла (при проверке все табуляции и переносы строк заменяются на пробелы, после чего все повторяющиеся пробелы сокращаются до одного)
nomelodic/file-system-security 适用场景与选型建议
nomelodic/file-system-security 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 13 次下载、GitHub Stars 达 0, 最近一次更新时间为 2021 年 01 月 25 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 nomelodic/file-system-security 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 nomelodic/file-system-security 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 13
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 4
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-01-25