新生鳩丸掲示板♯

bakera.jp > 新生鳩丸掲示板♯ > 投稿順表示 (216/283)

投稿順表示 (216/283)

[1369] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

スターダスト (2003年12月16日 22時11分)

なるほど、、、スタイル属性の中では、過去に検証したことがあります。

http://d.hatena.ne.jp/hoshikuzu/20030924

私の記憶では、crip\t が、Operaでも、Netscapeでも、IEでも通用してしまっていました。9月頃の最新で試したはずです。

[1368] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

yuu (2003年12月16日 21時58分)

> ……ただ、他の例についても NUL が無視されるという挙動は正しいのでしょうか? Mozilla 系でもやっぱり \0 は無視されてスタイルが適用されているようですが……。

Opera7.2だと、どれもスタイル適用されないですね。

[1367] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

ばけら (2003年12月16日 21時39分)

 すみません、私が出した正規表現に語弊があったようで申し訳ないです。

 16進エスケープの表現は仕様で正確に定められていまして、

\\[0-9a-f]{1,6}[ \n\r\t\f]?

 です。これは CSS2 の 4.1.1 に出ています。

 1桁から 6桁までの任意の数字が OK なのです。

#先の私の正規表現は出鱈目です。申し訳ないです。

 で、例によってテストを作ってみました。

 最後の二つは 7桁、0桁で不正なケースです。これら二つは黒背景・白文字になっては駄目です。

 ……ただ、他の例についても NUL が無視されるという挙動は正しいのでしょうか? Mozilla 系でもやっぱり \0 は無視されてスタイルが適用されているようですが……。

 NUL の扱いの規定って見た覚えがないので規定されていないような気がするのですが、調べてみます。

[1366] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

スターダスト (2003年12月16日 20時24分)

<style>

h1 {

co\0 lor: red;

}

h2 {

co\00 lor: red;

}

h3 {

co\000 lor: red;

}

h4 {

co\0000 lor: red;

}

h5 {

co\00000 lor: red;

}

h6 {

co\000000 lor: red;

}

div {

co\ lor: red;

}

</style>

<h1>h1</h1>

<h2>h2</h2>

<h3>h3</h3>

<h4>h4</h4>

<h5>h5</h5>

<h6>h6</h6>

<div>div</div>

ばけらさんの正規表現を、ちょっと図解してみました。なっていませんが。

ブラウザの CSS が正しく実装されているならばdiv要素はブラウザの既定のスタイルで表示される、と考えてよろしいでしょうか。IEならば黒。h2要素とh6要素で赤くなるの正しいと直感的に思います。その他は、不勉強な私には不明です。

[1365] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

ばけら (2003年12月16日 18時53分)

> 私にも分かりません。これは CSS 仕様の想定する挙動ではなく、MSIE が独自に気を利かせちゃっているのではないかと思います。

 ……と書いてから思い直したのですが、ひょっとするとバグなのかも知れません。以下はあくまで私が想像したシナリオですが……。

 バックスラッシュの後ろに 16進数の数値を書くというエスケープの方法があるのですが、それが MSIE の場合

"\[0-9]+ "

 ではなく

"\[0-9]* "

 にマッチするモノに対して処理されているのかもしれません。

 そうだとすると、\ の後ろに数字が無くてスペースが来る場合も (誤って) このパターンにマッチしてしまい \HH のエスケープとみなされます。数字部分は空ですがこれは 0 とみなされて、NUL 文字に展開されます。

 CSS2 では \HH エスケープに続く後ろの空白ひとつが削除される仕様ですから後ろのスペースひとつが削除されて NUL 文字だけとなり、NUL は消滅すると……。

[1364] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

ばけら (2003年12月16日 18時39分)

>これでは、赤い字のh1要素がcenterに位置づけられます。

>(WinIEではそうでした。)

>バックスラッシュの後のスペース文字が、どういうわけだか

>無視されます。

 むほっ、本当だ……。

>仕様を真剣に読んでもわかりませんでした。

 私にも分かりません。これは CSS 仕様の想定する挙動ではなく、MSIE が独自に気を利かせちゃっているのではないかと思います。

 @i も !i もこれもそうなんですが、余計なところで余計な気を利かせると前方互換性的にもセキュリティ的にもマズいですね。

 他にも気を利かせている例がありそうな気がしますが……。

[1363] Re: えび日記 : 「@i でインポート」

えむけい (2003年12月16日 11時39分)

サニタイザー【謎】としては、頭に「_」を付けただけで貫通されないよう注意する必要があるということですね。まあホワイトリストならだいたいあんしんですが。

[1362] Re: えび日記 : 「@i でインポート」

yuu (2003年12月16日 11時11分)

>>もちろん使いまくりです。

>>しかしそのうえで、状況に応じてその他の手段もあるに越したことはないのです。

>

>御意ですが、ホゥルの危険性とかサニタイズする側の苦労を増やしてでもあったほうがいい手段かというと微妙な感じです。

プロパティ名の頭に _ をつけるやつは便利ですけど。

[1361] Re: えび日記 : 「@i でインポート」

えむけい (2003年12月16日 9時15分)

>もちろん使いまくりです。

>しかしそのうえで、状況に応じてその他の手段もあるに越したことはないのです。

御意ですが、ホゥルの危険性とかサニタイズする側の苦労を増やしてでもあったほうがいい手段かというと微妙な感じです。

[1360] Re: えび日記 : 「@i でインポート」

yuu (2003年12月16日 8時48分)

>IE5以降ならConditional Commentが一番【謎】なのでは。

もちろん使いまくりです。

しかしそのうえで、状況に応じてその他の手段もあるに越したことはないのです。

[1359] Re: えび日記 : 「@i でインポート」

えむけい (2003年12月16日 7時17分)

IE5以降ならConditional Commentが一番【謎】なのでは。

Undocumentedな裏技と違ってサポートされてますし、バージョンの指定もできますし、何よりマトモな文法で解釈するとコメントになりますからやりたい放題【謎】です。

[1358] Re: えび日記 : 「@i でインポート」

yuu (2003年12月16日 0時9分)

>MSIE のバージョンいくつからこうなのか要調査ですが。

IE4.01, IE5.01SP2, IE5.5SP2 では、それぞれ黒地に白字という、正常な結果になりました。

アンダースコアをプロパティの頭につける方法だと、IE4.01以降すべて黄色地に黒字になりました。

となると、IE6オンリーな指定としては、「!i」は有効な方法であるといえるかもしれません。

[1357] Re: えび日記 : 「svchost.exe に何が?」

もっぷねこ (2003年12月16日 0時7分)

再送信

www.altba.comのかたは関係ありませんでした

[1356] Re: えび日記 : 「@i でインポート」

yuu (2003年12月15日 23時54分)

!i や @i でもイケてしまうというのはナンともショボイ話ですが、そもそもDOCTYPE宣言も、たとえば「<!DOCTYPE >」で標準モードが発動するという勢いな事実もあるので、案外いろいろと内部的にはそういう感じで実装されまくっているのだろうなあと、想像をかりたててしまいます。

[1355] Re: えび日記 : 「@i でインポート」

yuu (2003年12月15日 23時50分)

important だと強力すぎて(謎)、IEの中だけでも扱いに困ることがあるのではないでしょうか。

個人的には、IEはプロパティ名の頭にアンダスコアがあってもアンダスコアが無いかのように振舞うという特性(謎)を生かして、

body{

color: #fff;

_color: #000;

background: #000;

_background: #ff0;

}

という感じのがトレンド(謎)。

[1354] Re: えび日記 : 「svchost.exe に何が?」

もっぷねこ (2003年12月15日 23時45分)

今 走ってます 色々読みにきてますが大丈夫でしょうか?

どなたか教えてください

v4-ori.windowsupdate.microsoft.com IP207.46.244.158 svchost.exe(800) 65.54.249.254

www.altba.com IP211.16.234.154 iexplore.exe(348)

hois Server Version 1.3

rs.internic.net 198.41.0.6 193.0.0.236 192.0.34.126

[1353] Re: えび日記 : 「@i でインポート」

義珍 (2003年12月15日 22時49分)

@importantじゃなくて、@internetexplorerの略だったりして。

[1352] Re: えび日記 : 「CSS2 のバックスラッシュの扱い」

スターダスト (2003年12月15日 21時43分)

申し遅れました。現時点では、

Hotmailにおいてはworkaroundにて

\は\**と変換されています。

この後、さらに良いものになるかについては

不明です。

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

無視します。

というわけです。

[1350] Re: えび日記 : 「@i でインポート」

kotaro (2003年12月15日 21時21分)

( ・∀・)つ〃∩ <ヘェ~ヘェ~ヘェ~ヘェ~ヘェ~ヘェ~

まだまだいろいろあるもんですなあ。

最近の日記

関わった本など