必ず入力値を””でくくっても、クロスサイトスクリプティングが可能なサンプルプログラム

Webエンジニアの雄大です。

今回もクロスサイトスクリプティングのお話。
前回

ユーザ入力値をHTMLタグの属性値として画面に出力するときの対処方法は2つあるとされています。

・必ず入力値をダブルクォーテーション「””」で囲う。
・ダブルクォーテーションをHTMLエンコードをする。

と書きましたが、ダブルクォーテーションで囲っても、クロスサイトスクリプティングが可能なお話
引用符ありでもXSSが起きる例

quote.php

これに
quote.php?p=”+onmouseover%3d”alert(document.cookie)
このようなパラメータを渡してあげます。
そうすると、
<input type=input name=”p” value=”” onmouseover=”alert(document.cookie)”>
このように出力され、アラートが出てしまいます。

しっかりと、<>”‘&の記号はエスケープすることと併用しなくてはいけません。

コメント