- ベストアンサー
$_SERVER[PHP_SELF]のセキュリティ
$_SERVER[PHP_SELF]が問題のある部分だと説明してある本がありました。 本のタイトルは忘れてしまいました。 その検証をしたいので、ソースを教えて下さい。 <form action=$_SERVER[PHP_SELF] こちらより <form action="" こちらを推奨していたと記憶しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#49664
回答No.1
おそらくクロスサイトスクリプティング(XSS)が可能となってしまうためだと思います。 PHP_SELFはパスの情報もそのまま含めてしまうため、XSSが可能になります。 例えば、フォームの部分が、 <form method="post" action="<?php echo $_SERVER[PHP_SELF]; ?>"> こんな感じになっていたとすると、 http://hoge/hoge.php/%22%20onMouseOver=%22javascript:alert('hoge'); たとえばこんな感じでページアクセスすることでJavaScriptの実行が可能になってしまいます。(hoge/hoge.phpの部分を適当に書き換えて実際に試してみてください) このようにアクセスすると、実際に出力されるフォームタグは、 <form method="post" action="/hoge.php/" onMouseOver="javascript:alert('hoge');"> こんな具合になることがわかります。フォーム上にマウスポインタを移動した瞬間にJavaScriptのスクリプトが実行されるわけです。 ですので、""またはSCRIPT_NAMEを使用したほうがいいと思います。