PHPでのクロスサイトスクリプティング対策

| | トラックバック(0)
クロスサイトスクリプティングの(XSS)対策はサニタイジング(データの無害化)になります。
サニタイジングのタイミングはデータ入力時ではなくHTML生成時に行うのが良いです。

PHPでは、htmlspecialchars()を通せばほとんどのXSSは対応できるようです。

PHP: htmlspecialchars - Manual
http://jp.php.net/htmlspecialchars
<?php
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

このブログ記事について

このページは、D-ramが2008年6月13日 15:00に書いたブログ記事です。

ひとつ前のブログ記事は「Apacheのディレクトリ表示を行わない方法」です。

次のブログ記事は「FireFox3 ダウンロード開始」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01