記事個別表示 (1351)
これは「水無月ばけらのえび日記 : CSS2 のバックスラッシュの扱い」に関連するコメントです。
[1351] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」
スターダスト (2003年12月15日 21時36分)
送信者がHotmail受信者に
<style>
h1 {
co\lor: red;
text-a\lign: center;
}
</style>
<h1>見出し</h1>
を送信すれば、Hotmailが、XSS対策の為に
'\' が、'\*'(*は空白)となるようにフィルターしても
<style>
h1 {
co\*lor: red;
text-a\*lign: center;
}
</style>
<h1>見出し</h1>
と受信されます。
これでは、赤い字のh1要素がcenterに位置づけられます。
(WinIEではそうでした。)
バックスラッシュの後のスペース文字が、どういうわけだか
無視されます。\32* の*が無視されるといいますか、
それは当然なのですが、なぜに\* の*は無視されるのでしょう。
仕様を真剣に読んでもわかりませんでした。
ひとつめの案 /に続くスペースはスペースだよと、\は主張します。
これだと、 co*lor: red; で、文字色が赤くなるはずです。変。
ふたつめの案 /2桁か6桁の16進数に空白 を処理したかったけど
16進数がみつからず、とりあえず放置。その後、空白がひとつある
のをみつけて、普段どおり、処置。ただの空白削除?になりさがる?
機械の気持ちはわかりませんが、上のふたつめなら、
私には変だと思いつつ記憶することが出来ました。
さて、危険な文字列が、importだとします。
送信者は、impo\rt と綴ります。
すると、hotmailは、これを、危険な文字列、
importだと思いません。いつもなら取り除くくせに
バックスラッシュ1個で、フィルターを通過します。
hotmailは空白を一個つけるだけです。
空白を*とすると
受信者は、
impo\*rt
を受け取りますが、IEは、この姿を見て
importだと解釈します。
空白1個削除するバックスラッシュ説ですが。
これで、XSS脆弱性が発現します。
仮に、Hotmailが、空白2個をバックスラッシュの
後に付加するならば、安全となります。
受信者は、
impo\**rt
をもらいますので
IEは、これを
impo*rtとみなし、スタイルシートの仕様に従い
無視します。
というわけです。
これは「水無月ばけらのえび日記 : CSS2 のバックスラッシュの扱い」に関連するコメントです。
全読: [1344]Re: えび日記 : 「CSS2 のバックスラッシュの扱い」からのスレッド(20件)]