質問: 現在XSS(クロスサイトスクリプティング)のテストを行っていて、 PHPの対象箇所をhtmlspecialcharsの関数を用いて対応しています。 テスト用の値としてはalert(document.cookie)のスクリプトコード をURLパラメータにセットしてみて、Cookie情報がポップアップされないように 修正を行っています。 しかしながら、あるHTMLファイル内にPHPで記述されたコードがあるのですが、 htmlspecialchars関数を使ったら、添付画面のように、 表示されてしまいます。 ポップアップすることは直ったようですが、画面にこのような文字列が表示 されるようになってしまいました。 何か思い当たる原因はないでしょうか? 試してみるべきことがあったら教えてください。 どうぞよろしくお願い致します。 !不具合の画面
回答: ``` "><script>alert(document.cookie)</script> ``` は ``` "> ``` がhtmlspecialcharsで変換された結果です。 テスト用に渡した値がそのまま(変換されて)表示されているのではないかと思いますが、 「">」から始まっているので、どこかで「<」「>」の数があっていないとかはあるかもしれません。 参考:「HTMLでよく使用される特殊文字」に記号と変換後の文字列の表があります。