「`」(バッククオート)を使ったクロスサイトスクリプティング

相当時代遅れなのかもしれませんがセキュリティの話題を1つ。
「`」(バッククオート)を使ったクロスサイトスクリプティングの手法を今日知りました。
実際のところとしてはその他の対策で防御はされていたのですが、特に意識していなかったのでひやりとした気分です。


実際に動作すると思われるのが下記のようなHTMLです

<a href=`>
aaa
` onmouseover=javascript:window.alert('XSS')
<br/>
aaa
</a>

onmouseoverのイベントハンドラはタグではないテキストとして記述されているように見えますが動いてしまいます。
IEがバッククオートを引用符として認識してしまい、テキスト部分が属性と認識されることが原因のようです。

実際のところタグを自由入力禁止や属性の形式検査などを行っていればその部分で検出可能でしょう。
そもそもタグを自由入力させる事がほぼ無かったので今日になって気づく事になりました。
今後の為にも「`」がこういった挙動をする事は覚えておこうと思った次第です。