クロスサイトスクリプティング
HTML内には攻撃者が悪意のあるスクリプトをインジェクションし得る箇所として以下のものがある:
フォームなど変数の値を入力可能な場所(前述)
スクリプト文 <script></script>の内部、および<script></script>のURLのリモート参照 タグのstyle属性およびイベントハンドラ属性中のスクリプト記述。具体的には<div style="...;z:expression(...);...">や、<span onmouseover="...">等。
URLを属性値として取れる要素、およびそこでのスクリプト直接記述。 具体的にはa要素のhrefとimg、frameとiframeのsrc属性。
2.の場合、URLとして「javascript:(JavaScript文)」の形式(javascriptスキーム)を利用してJavaScriptを注入することができる。
HTML中で属性値を引用符でくくっていても適切な対策(属性値中で引用符「"」をエスケープ)をしない限り、XSS対策にならない。たとえば
のように青色で示した入力値inputvalが引用符でくくられていたとしていても 攻撃者が
というURLを被害者にクリックさせると、被害者のブラウザでは(HTML中では%3dが「=」に変換されるので)
となってしまうので、onmouseoverイベントハンドラによりマウス移動時に悪意のあるスクリプトが実行されてしまう。