php.ini セキュリティ強化編
written 2006/6/9
注) ここで取り上げている項目がすべてではありません! 私が特に気をつけているものから、とりあえずいくつかを挙げているだけです。
register_globals
これは危険なので有名ですね。POST値やGET値、Cookie値などとして渡された値がそのままグローバル変数になってしまう。危険極まりないです。ふつうデフォルトでOffですが一応確認。
register_globals = Off
よけいな情報を出さない
下記expose_phpがデフォルトの「On」になっていると、HTTPヘッダに「X-Powered-By: PHP/4.2.3」などと、バージョンまで表示されちゃいます。
攻撃者に情報を与えないという観点では、ここは隠蔽しちゃいましょう。
ちなみに、Mozilla Firefoxに拡張「Web Developer」を入れ、「View Response Headers」を実行すると、webページのHTTPヘッダを確認できます。
expose_php = Off
HTTPヘッダにApacheのバージョン等が出ているのを隠したい場合は、Apacheの設定をいじらなくてはいけません。
セッション関係
Session関係では、セッションIDの情報をクッキーなしで使用するという、「セッションIDのURL組み込み」機能が気になります。「index.php?PHPSESSID=asdyuhjhh...」などとするとセッションIDが有効になるというのですが、これって、セッションハイジャックの危険性をはらんでいるのでは・・・。ということで無効にしてみます。
session.use_trans_sid = 0
# ↑これは自動変換機能。1で有効、0で無効です。
session.use_only_cookies = 1
session.cookie_lifetimeは、セッションのcookieの有効期限です。デフォルトの「0」だとブラウザを閉じるまでずーっと有効になっています。複数の人間で使っている共用クライアントPCで、前の人がパスワード入れたまんまどっかに行っちゃったりすると、後の人がセッションハイジャック・・・というより棚からセッション状態ですので、そこそこの設定をしてみましょう。単位は「秒」です。
session.cookie_lifetime = 3600
# 60×60なのでこれだと1時間。用途に応じて変更。