クロスサイトスクリプティング攻撃はよく知られた攻撃手法の一つです。すべてのプラットフォームの Web アプリケーションがこの問題に悩まされており、PHP アプリケーションも例外ではありません。
入力を伴うすべてのアプリケーションが危険にさらされます。ウェブメール、フォーラム、ゲストブック、さらにはブログ。実際、ほとんどの Web アプリケーションは、より多くの人を惹きつける目的で入力を提供していますが、同時に、これは自らを危険にさらすことにもなります。クロスサイト スクリプティングの脆弱性は、入力が適切にサニタイズされてエスケープされていない場合に発生します。
各ページにコメントを入力できるアプリケーションを例に挙げると、次のフォームを使用してユーザーの送信を支援します:
CODE:
<form action="comment.php" method="POST" /> <p>Name: <input type="text" name="name" /><br /> Comment: <textarea name="comment" rows="10" cols="60"></textarea><br /> <input type="submit" value="Add Comment" /></p> </form>
このプログラムは、ページを訪問する他のユーザーへのコメントを表示します。たとえば、次のようなコード スニペットは、コメント ($comment) と対応する作成者 ($name) を出力するために使用できます。プロセスは、$comment と $name の値に完全な信頼を与えます。そのうちの 1 つの内容に次のコードが含まれていると想像してください。ユーザーがこのコメントを閲覧することは、他のユーザーが Web サイトのソース コードに Javascript コードを追加できるようにすることと何ら変わりません。ユーザーは無意識のうちに自分の Cookie を evil.example.org に送信し、受信プログラム (steal.php) は $_GET['cookies'] 変数を介してすべての Cookie にアクセスできます。
これは、主に悪いプログラミング習慣によって引き起こされるよくある間違いです。幸いなことに、そのような間違いは簡単に避けることができます。このリスクは汚染されたデータを出力する場合にのみ発生するため、第 1 章で説明したように入力をフィルタリングし、出力をエスケープするようにしてください
少なくとも、htmlentities( ) クライアントに出力したいデータをエスケープします。この関数は、すべての特殊文字を HTML 表現に変換できます。ブラウザに特殊な処理をさせるすべての文字が変換された後、元の入力内容が表示されることが保証されます。
したがって、コメントを表示するには次のコードを使用する方が安全です:
CODE:
<?php echo "<p>$name writes:<br />"; echo "<blockquote>$comment</blockquote></p>"; ?>
上記はPHPセキュリティクロスサイトスクリプティング攻撃の内容です, 詳細 関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。