Iniscan は、一般的なセキュリティ慣行について指定された php.ini ファイルをスキャンし、結果をレポートするように設計されたツールです。現在、これはコマンド ラインでのみ使用され、各テストの合格と不合格の両方の結果がディスプレイにレポートされます。
composer require psecio/iniscan
現在の唯一の依存関係は Symfony コンソールです。
さらに、Composer が提供するglobal
機能を使用して、プロジェクトの外部にインストールすることもできます。任意のディレクトリから以下を使用できます。
$ ./composer.phar global require psecio/iniscan
$ ~/.composer/vendor/bin/iniscan
まず、composer.phar install を実行していることを確認してください。
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.
これはデフォルトの動作であり、有効にする必要はありません。
@author Chris Cornutt [email protected]