Iniscan — это инструмент, предназначенный для сканирования данного файла php.ini на предмет общих мер безопасности и предоставления результатов. В настоящее время он предназначен только для использования в командной строке и выводит на дисплей результаты как для прохождения, так и для отказа в каждом тесте.
composer require psecio/iniscan
Единственная текущая зависимость — это консоль Symfony.
Кроме того, вы можете установить его вне проекта с помощью global
функций, предоставляемых Composer. Из любого каталога вы можете использовать:
$ ./composer.phar global require psecio/iniscan
$ ~/.composer/vendor/bin/iniscan
Сначала убедитесь, что вы запустили установку композитора.phar.
curl -LSs https://box-project.github.io/box2/installer.php | php
php box.phar build
Это должно привести к созданию файла iniscan.phar в корневой папке. Вместо vendor/bin/iniscan
в примерах используйте ./iniscan.phar
.
vendor/bin/iniscan scan --path=/path/to/php.ini
Results for /private/etc/php.ini:
============
Status | Severity | PHP Version | Key | Description
----------------------------------------------------------------------
PASS | ERROR | | session.use_cookies | Accepts cookies to manage sessions
PASS | ERROR | 4.3.0 | session.use_only_cookies | Must use cookies to manage sessions, don't accept session-ids in a link
1 passing
2 failure(s)
ПРИМЕЧАНИЕ. Если при запуске сканирования не удается найти настройку в заданном
php.ini
, оно будет использовать ini_get для получения текущей настройки (возможно, по умолчанию).
Iniscan предлагает несколько команд для проверки и отображения содержимого вашего php.ini.
Команда scan
будет наиболее часто используемой — она запускает проверку правил для данного ini-файла и возвращает результаты. Например:
vendor/bin/iniscan scan --path=/path/to/php.ini
Если путь опущен, iniscan попытается найти его на основе текущей конфигурации (вызов «php -i»). По умолчанию это возвращает результаты как пройденных, так и неуспешных проверок. Если вы хотите возвращать только ошибки, вы можете использовать аргумент fail-only
:
vendor/bin/iniscan scan --path=/path/to/php.ini --fail-only
Команда scan
вернет код выхода на основе результатов:
Вы можете запросить единственное сканирование правил, которые находятся на пороговом уровне или превышают его:
vendor/bin/iniscan scan --path=/path/to/php.ini --threshold=ERROR
Вы можете использовать 3 уровня:
Команда show
выводит содержимое вашего файла php.ini
с небольшим дополнительным форматированием.
vendor/bin/iniscan show --path=/path/to/php.ini
Команда list-tests
показывает список текущих проверяемых правил и связанный с ними ключ php.ini.
vendor/bin/iniscan list-tests
По умолчанию iniscan выводит информацию непосредственно на консоль в виде удобочитаемого результата. Вы также можете указать другие форматы вывода, которые будет проще анализировать программно (например, JSON). Используйте опцию --format
, чтобы изменить вывод:
vendor/bin/iniscan show --path=/path/to/php.ini --format=json
команда list-tests
также поддерживает вывод JSON:
vendor/bin/iniscan list-tests --path=/path/to/php.ini --format=json
ПРИМЕЧАНИЕ. В настоящее время только команда scan
поддерживает альтернативные форматы вывода — консоль, JSON, XML и HTML.
Опция вывода HTML требует наличия опции --output
каталога для записи файла:
vendor/bin/iniscan scan --format=html --output=/var/www/output
Результат будет записан в файл с именем вроде iniscan-output-20131212.html
Сканер также поддерживает концепцию «контекстов» — сред, в которых вы можете запускать сканер. Например, в вашей среде разработки можно включить display_errors
. Однако в производстве это плохая идея. По умолчанию сканер предполагает, что вы используете его в рабочей версии, поэтому он использует самые строгие проверки, если вы не укажете иное. Для этого используйте параметр командной строки context
:
vendor/bin/iniscan show --path=/path/to/php.ini --context=dev
В этом случае мы сообщили ему, что работаем в режиме разработки, поэтому все, что конкретно упоминает «prod», не выполняется.
Во время работы сканер сравнивает ключ конфигурации со списком устаревших элементов. Если версия соответствует версии, определенной в правилах, или новее, в выходных данных будет отображена ошибка. Например, в консоли вы увидите:
WARNING: deprecated configuration items found:
-> register_globals
It's recommended that these settings be removed as they will be removed from future PHP versions.
Это поведение по умолчанию, и его не нужно включать.
@автор Крис Корнатт [email protected]