PHPでのクロスサイトスクリプティング対策
クロスサイトスクリプティングの(XSS)対策はサニタイジング(データの無害化)になります。
サニタイジングのタイミングはデータ入力時ではなくHTML生成時に行うのが良いです。
PHPでは、htmlspecialchars
PHP: htmlspecialchars - Manual
http://jp.php.net/htmlspecialchars
共に変換されます。
ただし、上記ではまずいケースもあります。
Aタグの中ではJavaScriptが実行可能なので以下のような場合はXSSに対処できません。
URLリンクをクリックした際、アラートが表示されます。
実装する場合は、まずGETやPOSTに不正なデータが入っていないかを必ずチェックしてから
エスケープするということをやっておけば、問題ないでしょう。
サニタイジングのタイミングはデータ入力時ではなくHTML生成時に行うのが良いです。
PHPでは、htmlspecialchars
()を通せばほとんどのXSSは対応できるようです。PHP: htmlspecialchars - Manual
http://jp.php.net/htmlspecialchars
<?php
htmlspecialchars($_POST["url"], ENT_QUOTES, 'UTF-8');
?>
第二引数には、htmlspecialchars($_POST["url"], ENT_QUOTES, 'UTF-8');
?>
ENT_QUOTESを入れておけばシングルクオートとダブルクオートが共に変換されます。
ただし、上記ではまずいケースもあります。
Aタグの中ではJavaScriptが実行可能なので以下のような場合はXSSに対処できません。
<a href="<? echo htmlspecialchars( $_POST['url'] ) ?>">URLリンク</a>
このページに対してPOSTで'url'にjavascript:alert('NG') と入れて送信するとURLリンクをクリックした際、アラートが表示されます。
実装する場合は、まずGETやPOSTに不正なデータが入っていないかを必ずチェックしてから
エスケープするということをやっておけば、問題ないでしょう。
トラックバック(0)
このブログ記事を参照しているブログ一覧: PHPでのクロスサイトスクリプティング対策
このブログ記事に対するトラックバックURL: http://blog.e-slas.com/weblog/mt-tb.cgi/36
