« HTAファイルをWEBアーカイブ形式(MHTML)にする。 | トップページ | コマンドラインで、フォルダとファイルを判別する。 »

2006年9月18日 (月)

HTMLで、逆引用符は引用符か?

規格では、逆引用符は引用符になってないようですが、現実のブラウザでは、引用符のようです。

試しに、

<html><body><form>
<input type=text >
<input type=text >
</form></body></html>

というHTMLをIEで開いて、
ひとつ目に、`、
二つ目に、`><script>alert(1)</script>、
を入れると、
document.documentElememt.outerHTMLから取り出したHTMLは、

<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=shift_jis"></HEAD>
<BODY>
<FORM><INPUT value=`> <INPUT value="`><script>alert(1)</script>"> </FORM></BODY></HTML>

になります。このHTMLを保存して開くと、入力したスクリプトが動きます。

属性値をHTMLEncodeして単一/二重引用符で囲んでいる分には問題ないようです。

もし、属性値を逆引用符で囲むことがあるならば、逆引用符もエンコードするように
HTMLEncodeを修正する必要がありますが、それはきっとないのでしょう。

« HTAファイルをWEBアーカイブ形式(MHTML)にする。 | トップページ | コマンドラインで、フォルダとファイルを判別する。 »