Home > PHP > クロスサイトスクリプティング

クロスサイトスクリプティング

  • 2007-05-21 (月)
  • PHP

form などで受け取った文字列をそのまま表示すると、悪意のあるタグが埋め込まれた時に悲劇が起こります。

例えば、以下のような PHP プログラムは非常に危険です。

echo $_GET['query'];

この場合、訪問者が form にアンカータグを埋め込んだ場合、

<a href="http://yahoo.co.jp/">Yahoo!JAPAN</a>

と入力すると、

Yahoo!JAPAN

というように、タグがそのまま解釈されて表示されてしまいます。

悪用される時は、こんな子供染みたいたずらではなく、JavaScript を使ってクッキー情報を抜き取られたりなど、サイト訪問者に害を及ぼすことも考えられます。

エスケープ処理

form から受け取ったデータに限らず、とにかく他所から受け取ったデータを生で表示するのは避けましょう。

PHP であれば、htmlspecialchars 関数を使えば、HTML で危険とされる5つの文字(&,<,>,",')をエスケープした文字列を返してくれます。

echo htmlspecialchars($_GET['query'], ENT_QUOTES);

第二引数に ENT_QUOTES を設定すると、シングル、ダブルクオート 共に変換されます。ENT_QUOTES を設定しないとシングルクオートは変換されません。

PHP で他所から受け取ったデータを HTML で出力する際には、データの安全性を確認しましょう。データの安全性が確認出来ない場合は、出力する際に、エスケープ処理を行うようにしましょう。

Tags :
Php?クロスサイトスクリプティング?Htmlspecialchars?クロスサイト?エスケープ?

カテゴリ「PHP」の最新記事

カテゴリ「PHP」 の全ての記事を読む

「php」に関連する商品を...

Home > PHP > クロスサイトスクリプティング

Search
Feeds

Page Top