Перейти к основному содержимому
Версия: v0.20

Безопасность и состояние PHP SDK

SDK читает недоверенные файлы проекта и может изменять их при включенном устранении. Считайте сканирование привилегированной операцией с явной целью, контролируемым хранилищем и путем проверки для каждой находки.

Глобальная для процесса конфигурация

Scanner хранит свою конфигурацию и текущий отчет в статическом состоянии. Свободно связываемые методы настройки возвращают новый экземпляр Scanner, но изменяют это общее состояние процесса.

$first = new Scanner();
$second = $first->setPathScan('/srv/project-a');

// Both objects observe the same Scanner configuration.

Запускайте в каждом процессе PHP только одно сканирование одновременно. Для фоновых заданий, параллельных запросов или изоляции арендаторов используйте новый CLI-процесс. Долгоживущий воркер должен применять полную конфигурацию перед каждым запуском и не переиспользовать состояние предыдущего задания.

run() сбрасывает отчет в начале сканирования. Он не сбрасывает более широкую конфигурацию сканера. Не полагайтесь на создание объекта для восстановления значений по умолчанию.

Операции с файлами

Поведение запроса по умолчанию различается между интерактивными и тихими запусками. В автономном коде выбирайте действие явно:

$report = (new Scanner())
->setPathScan('/srv/app')
->setSilentMode()
->setAutoSkip()
->run();

Для любого действия, изменяющего файлы, вызовите enableBackups() и задайте в setPathBackups() доступный для записи каталог за пределами цели. Храните карантин, белый список, деобфускацию, отчеты, журналы, долговременные находки и контрольные точки за пределами сканируемого проекта, чтобы сканер не проверял собственный вывод.

Перед включением автоматической очистки, карантина или удаления:

  1. Выполните сканирование только с отчетами на типичных копиях приложения.
  2. Проверьте coverage, findings и diagnostics для каждого запуска.
  3. Протестируйте процедуры резервного копирования и восстановления под той же учетной записью, которая запускает рабочие сканирования.
  4. Ограничьте целевой путь утвержденными корнями проекта.

Пути и разрешения

Передавайте абсолютные пути из доверенной конфигурации. Нормализуйте и авторизуйте пути, полученные из запроса, перед вызовом setPathScan(), setPathReport() или любого другого метода настройки пути. SDK нормализует пути с помощью Path::get(), но нормализация не обеспечивает границу авторизации приложения.

Запускайте сканер с минимальным доступом к файловой системе, необходимым для чтения цели и записи контролируемого вывода. Не запускайте веб-запрос от имени учетной записи, которая может сканировать или удалять файлы за пределами предполагаемого корня развертывания.

Сетевое поведение и автономная работа

Сканирование основного кода использует встроенные определения. Проверка целостности и определения доменов Maltrail могут использовать исходящий HTTPS. Сканер хранит успешные удаленные данные в кэше операционной системы за пределами цели сканирования.

Когда среда блокирует исходящий трафик, собирайте и сохраняйте диагностику отчета. Неудачное обновление может оставить активными кэшированные определения; отчет записывает доступные метаданные в signature_indexes. Не считайте массив диагностики пустым, если сетевой маршрут отсутствует.

Политика обработки сбоев

Считайте false от run() операционной ошибкой. Считайте неполный охват, диагностику и предупреждения сигналами для проверки. Сохраняйте отчет с отметкой времени сканирования, идентификатором цели, версией сканера из Scanner::getVersion() и любым внешним идентификатором задания.

SDK предоставляет сообщения перехваченных ошибок через getLastError(). Записывайте их в защищенный журнал приложения. Не предоставляйте недоверенным пользователям целевые пути, содержимое отчетов или необработанный текст ошибок.