新生鳩丸掲示板♯

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

投稿順表示 (215/282)

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

ばけら (2003年12月17日 12時48分)

>書き込んでスグニ関連のない話題だと気がつきました。間違い。すみません。あわてもの。

 関係ないつながりで関係ない話を書いてみますが、16日の日記について。

http://d.hatena.ne.jp/hoshikuzu/20031216#p4

>ふと、思いますが、”で囲わなくても良し、というのは、IEでは、いつからなのでしょう。これって困るんですけど。フィルターにとって。まじめなフィルターであればあるほど、CSSの部分をしっかり仕様にあわせて構文解析するはずです。仕様をあてにしてサニタイズするとダメですか?

 これですが、実は仕様自体が結構複雑でして、url() の中身となる場合は引用符で囲まなくて良いことになっています。CSS1 で最初に出てくる @import の例でも囲まれていません。

 また、url() 関数を使わないで文字列を直で書くこともできることになっていますが、その場合は「キーワード」ではなく「文字列」を書かなければならないので、引用符で囲む必要があります。結論としては、@import の書き方には

@import url("……")

@import url(……)

@import "……"

 の 3種があることになります。いちおう

@import ……

 という書き方は駄目なはずで、これについては IE が気を利かせすぎという話になると思います。

 また、二重引用符ではなく単引用符でも OK ですし、さらに後ろにメディアタイプ指定がついてくるパターンも存在します。

 @import の書式については、CSS2 のこの辺りが詳しいです。

 余談ですが、仕様的には

color: red;

 を

color: "red"

 と書いては駄目ということになっています。しかしこれは昔の IE では気を利かせて red と同一視していました (私の記憶が確かなら)。

 これは IE6 の標準モードでは正しく無視されるという挙動になったのですが、互換モードだとやっぱり気を利かせて red と同一視します。

 こんなふうに標準モードと互換モードで挙動が違うという話もあったりするので、もうとにかく厄介です。

[1372] Re: えび日記 : 「マーク・ハント」

或k-1馬鹿 (2003年12月16日 22時49分)

最近不調のようですが・・・

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

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

ばけらさんのテストスイートを私の日記で参照させていただきました。ありがとうございます。

http://d.hatena.ne.jp/hoshikuzu/20031213#p4

IEだけがバギーと考えてもよろしいでしょうか。

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

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

書き込んでスグニ関連のない話題だと気がつきました。間違い。すみません。あわてもの。

[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

最近の日記

関わった本など