IE8 ではかなりの数のメソッドやプロパティが増えているようです。書き残します。

window.toStaticHTML

window.toStaticHTML は、XDomainRequest や postMessage で受け取った文字列(HTML)をサニタイズ(消毒)するメソッド。

XHRやJsonで受け取った文字列のサニタイズにもシーンを選べば使えるのだろうか。

onclick等のイベントハンドラ系を潰す。

<div onclick="alert('hoge')">hoge</div> ↓ <div>hoge</div>

scriptタグを潰す。

<script>alert("hoge")</script> ↓ 無かったことになる

img { expression(uuClass.IEBoost.AlphaPNG._expression(this)) } img { behavior: expression(uuClass.IEBoost.AlphaPNG._expression(this)) } div img { behavior: expression(uuClass.IEBoost.AlphaPNG._expression(this)); color: blue; } ↓ img {;} img {;} div img { color: blue; }

なんか色々潰す

<?IMPORT namespace="t" implementation="#default#time2"> <v:rect id="rect1" style="..."></v:rect> <t:animate /> ↓ 無かったことになる

オレオレマークアップを潰す

<div>hoge</div><oreore:hoge>hoge</oreore:hoge> ↓ <div>hoge</div>hoge

壊れたマークアップはエンティティ化して無害化する

<div>hoge</div<oreore:hoge>hoge</oreore:hoge> ↓ <div>hoge</divhoge 細工は無駄x3 <scr<oreore:hoge>ipt</oreore:hoge>> ↓ <script>

<a href="http://example.com/" title="hoge">clickme</a> <a href="javascript:alert(document)" title="hoge">clickme</a> ↓ <a href="http://example.com/" title=hoge>clickme</a> <a title=hoge>clickme</a>

Quirks Mode だろうが、IE8モードだろうが XHTML1.0だろうが関係なく、title="hoge" を title=hoge に改変してくるし、hrefを属性ごとたたき落とす(href=""で十分なのに)。これはXHTML的にまずいので、ぜひ修正してもらいたい。

おまけ

<input type="button" value="hoge"/> <input type="button" value="hoge"></input> <hr/> <br /> ↓ <input type=button value=hoge> <input type=button value=hoge> <hr> <br>

toStaticHTMLはホワイトリストで管理しているように見えるけど、expressionへの対応を見たかぎりじゃ、文脈的に正しくなくても潰しにかかるみたい。