新生鳩丸掲示板♯

bakera.jp > 新生鳩丸掲示板♯ > [1351] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

記事個別表示 (1351)

[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とみなし、スタイルシートの仕様に従い

無視します。

というわけです。

コメントフォーム

※広告や宣伝の書き込みはご遠慮ください。

:

:

:

最近の日記

関わった本など