で、ここからが本題
IE で例えば
<input type="text" value="`abc`size=200">
のようなHTMLを表示させたとします。value 属性はダブルクォートで囲まれていますので、当然「`abc`size=200」という文字列になります。ところが、これを印刷プレビューさせてみると
a) value にスペースが入っていない場合は前後の "" は消える。
b) バッククォート(`) が引用符として働く
という2つのおかしな挙動が重なって、size 属性が有効となり、input のサイズが200になってしまいます。
さて、これを利用してXSSさせることは可能か、ということでいろいろ検証してみました。
<div title="``onlayoutcomplete=document.writeln(document.location)"> <div title="`abc`onbeforeprint=document.writeln(document.location)"> <div title="`abc`onafterprint=document.writeln(document.location)">
のようなタグを入れてみたりしたのですが、スクリプトは動きませんでした。残念というか安心というか。
もし、この手法を使ってスクリプトの発動が可能だった場合には、ちゃんとIEの脆弱性として届け出てくださいね。