PHP5.3 php.iniの必須設定サンプル
php.iniの「こうしておいたほうがいい!」という設定項目を備忘録として記事にします。
- allow_url_fopen
(初期値)On(推奨値)Off
ファイルシステムを扱うfopenラッパーに対し、URLオブジェクトへのアクセスを許可を設定する。
Onにした場合、file_get_contents()で指定したURLのコンテンツを取得可能となり、外部コンテンツの取り扱いが容易になる。
対象URLを信頼出来るものに限定しておけば安全ですが、他サイトコンテンツへのアクセスが不要なWebアプリケーションではOffにしておくべき。
ただし、PHP5.2.0より前のバージョンを使用している場合は、「リモートファイルインクルード攻撃」が可能になるので必ずOffに。
- allow_url_include
(初期値)Off(推奨値)Off
リモートファイルのincludeやrequireを許可するための設定です。
「リモートファイルインクルード攻撃」が可能になるのでかならずOffに。
- expose_php
(初期値)On(推奨値)Off
サーバーにPHPがインストールされているか通知するための設定です。
これがOnの場合、HTTPレスポンスヘッダにPHPのバージョンが表示されてしまうので、Offに。
- error_reporting
(初期値)"E_ALL & ~E_DEPRECATED"(推奨値)"E_ALL | E_STRICT"
エラーのレポートレベルを指定します。
推奨値は「E_STRICTを含む、すべてのエラー」です。
- display_erros
(初期値)Off(推奨値)Off
ブラウザにエラー内容を出力するか設定します。
開発環境であれば出力させるべきですが、実運用環境では必ずOffに。
- log_errors
(初期値)On(推奨値)On
エラーをログに出力するか設定します。
- error_log
(初期値)設定なし(推奨値)出力させたいログファイルへのフルパス
エラーを出力させたいログファイルへのパスを指定します。
- open_basedir
(初期値)設定なし(推奨値)設定なし
PHPによるアクセスを、特定のディレクトリ以下に制限するための設定です。
プログラムをほとんど修正することなく「ディレクトリトラバーサル」に対応することができますが、副作用が出てしまう可能性もあるので、プログラムの実装をよく確認し検討すべきです。
- disable_function
(初期値)設定なし(推奨値)無効にしておきたい関数名
指定した関数を無効にします。
phpinfo()やeval()など脆弱性につながるものをカンマ区切りで指定しておくとことができます。
- enable_dl
(初期値)Off(推奨値)Off
PHPの拡張機能を動的にロードする機能を有効にするための設定です。
PHP5.3.2からは非推奨となっており、将来的には削除されるのでOffにすべきです。
(初期値)Off(推奨値)Off
Onの場合$_GETなどのスーパーグローバル変数に設定された連想配列の値が、キーを変数名として自動的に展開されます。
リクエストパラメータにhttp://hoge.com/index.php?fuga=悪意でアクセスした場合、$fugaという変数に悪意が自動的にセットされます。必ずOffにすべきです。
- default_charset
(初期値)設定なし(推奨値)使用するエンコード
HTTPレスポンスヘッダで通知する文字エンコーディングを指定します。例:UTF-8
指定しない場合、ブラウザに文字エンコーディングをUTF-7であると誤認識させ「クロスサイトスクリプティング」を発生することが可能になります。必ず指定すべきです。
- file_uploads
(初期値)On(推奨値)Off
PHPによるファイルアップロード許可を設定します。ファイルアップロードを行う必要がないWebアプリケーションではOffにすべきです。
- session.hash_function
(初期値)0(推奨値)1
セッションID生成に使用するハッシュアルゴリズムを指定します。
0の場合MD5、1の場合SHA-1を使用します。暗号強度の強いSHA-1を指定すべきです。
- session.use_cookies
(初期値)1(推奨値)1
SESSIONID管理にCookieを使用するかしていします。
クッキーを利用しない場合、URLのパラメータに付与されてしまいリファラなどから(外部サイトへ遷移した場合など)SESSIONID漏洩の危険があるので有効にすべきです。
- session.use_only_cookies
(初期値)1(推奨値)1
上記のsession.use_cookiesを強制させます。同様の理由から有効にすべきです。
一部のガラケーがCookieに対応していませんので、携帯向けのWebサイトを作成する場合検討が必要です。
- session.cookie_httponly
(初期値)設定なし(推奨値)1
クッキーにたいするアクセスをHTTPのみに限定させます。これをOnにするとJavaScriptなどがSESSIONIDのCookieにアクセスできなくなります。
「クロスサイトスクリプティング」によるSESSIONID漏洩を防ぐことができるので、有効にすべきです。
- session.cookie_lifetime
(初期値)0(推奨値)0
SESSIONID管理に利用するCookieの有効期限を指定します。0の場合は「ブラウザを閉じるまで」です。
(初期値)0(推奨値)0
SESSIONIDの管理にCookieが使用できない場合、URLに自動的に付与するかの設定です。必ずOffにすべきです。
- session.save_path
(初期値)設定なし(推奨値)一般ユーザーはアクセス出来ないパス
サーバーのセッションデータ保存先を指定します。指定しない場合「/tmp/」です。
どこからでも参照可能なディレクトリを指定した場合、「セッションハイジャック」を行うことが可能になります。
- session.auto_start
(初期値)0(推奨値)0
クライアントからリクエストがあった場合にセッションを自動的に開始するか指定します。
特にメリットはないのでOffにすべきです。