水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > サニタイズ言うなキャンペーンがわかりにくい理由 > 「サニタイズ言うなキャンペーンがわかりにくい理由」へのコメント

「サニタイズ言うなキャンペーンがわかりにくい理由」へのコメント

[3305] Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」

774 (2006年1月5日 16時45分)

> 設定ファイルに書かれたものや、管理者の入力したもの

そういうのはブラックボックス化すればいいんじゃないでしょうか?

運用がめんどいですけど

[3306] Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」

itochan (2006年1月7日 11時25分)

あけましておめでとうございます。

読んだ時わたしも感想を持ったので転載します。

「ここは攻撃される個所だから補強する」っていう考え方が、プログラマのポリシーとしてどうなのかっていう話なんだ。

「フールプルーフで設計構築しよう」

って考えたらわかりやすくなった。

こういう理解です。

家を建てる時、壁に亀裂が入ったら塗ればいいってものじゃないですよね。

使用中にひびが入らないために工事段階での補強を考えるのではなくて、

構造計算を重視しろという意味だと理解しました。

[3307] Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」

かんな (2006年1月8日 0時43分)

高木さん自身はサニタイズ症候群とも言ってますが、そのほうが「サニタイズ言うなキャンペーン」よりもわかりやすくていいんじゃないでしょうか。

CGIでHTMLに出力する際'&'は文字参照する必要がないとあるMTのブログに書かれていたので、そんなことない&も&に変換する必要がありますと書き込んら、&も&に変換する必要がありますと表示されてげんなりした思い出があります。

さらにそれではHTMLの文法上正しくならないと突っ込んだら、HTMLが正しいかどうかの記事じゃないとか言われてさらにげんなりしました。私は<>&"'は全部変換する必要があると思うのですが、相手がサニタイズ症候群に陥っていると、その必要性を理解してもらえなくて残念な思いをします。

[3309] Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」

えむけい (2006年1月8日 2時16分)

そこで真も日ブのサポート掲示板ですよ【謎】。

mixiやはてなも&を実体参照に変換して出力しないようですが、それらは単に何も考えていないだけのようです【謎】。

http://bugzilla.mozilla.gr.jp/show_bug.cgi?id=4873

2chも(ryですが、それはここ【何処】で説明するには余白が狭すぎる【謎】歴史的経緯からそうなっています。

> 私は<>&"'は全部変換する必要があると思うのですが、

ていうかその意見自体すでにサニタイズ症候群な感じがします。

ちなみに&に対して何もしないとネスケで任意のスクリプトが実行可能ですが、さすがに古すぎて説得力がいまいちのようです。

[3310] Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」

えむけい (2006年1月8日 2時16分)

>ネスケで

ネスケ4です。

[3311] Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」

のぐー (2006年1月8日 4時11分)

>ネスケ4です。

詳細希望。

ていうか、

http://nogue.cocolog-nifty.com/diary/2004/02/_ihtml.html

でも表明してますが、(i-mode実機については確認してませんが)少なくとも「i-modeシミュレータ」という名のブラウザについては、

http://www.ne.jp/asahi/minazuki/bakera/html/opinion/ampersand

の指示を守ると、かえってトラブルを起こす(カウンタを表示しなくなる)ことがわかっている。一方で

>しかし、&p を ? などに置き変えてしまうブラウザがあったとしても文句は言えないのです。

文句は言えないかもしれませんが実際にそんなブラウザを確認したことはないので、私はあえて&amp;とは書かないようにしてます。

[3312] Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」

かんな (2006年1月8日 7時36分)

>>ネスケ4です。

>詳細希望。

>

>ていうか、

>http://nogue.cocolog-nifty.com/diary/2004/02/_ihtml.html

>でも表明してますが、(i-mode実機については確認してませんが)少なくとも「i-modeシミュレータ」という名のブラウザについては、

>http://www.ne.jp/asahi/minazuki/bakera/html/opinion/ampersand

>の指示を守ると、かえってトラブルを起こす(カウンタを表示しなくなる)ことがわかっている。

パラメータは ; で区切ろう!<http://bakera.jp/html/opinion/perl.html>

[3313] Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」

えむけい (2006年1月8日 9時15分)

>>ネスケ4です。

>詳細希望。

http://wp.netscape.com/eng/mozilla/3.0/relnotes/windows-3.03.html

の「JavaScript Evaluation in HTML」を参照。

ネスケ4と言いつつネスケ3のリリースノートですが、ネスケ4まではありました。

[3315] Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」

ばけら (2006年1月9日 0時27分)

>http://wp.netscape.com/eng/mozilla/3.0/relnotes/windows-3.03.html

>の「JavaScript Evaluation in HTML」を参照。

>ネスケ4と言いつつネスケ3のリリースノートですが、ネスケ4まではありました。

 いちおう、HTML4 の仕様でも言及されてはいます。

[3321] Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」

ばけら (2006年1月9日 0時38分)

>私は<>&"'は全部変換する必要があると思うのですが、

 まあこれも微妙な話で、たとえば CDATA 区間内では & は変換する必要がなかったりとか、引用符で括られた属性値の中では <> はそのままでも良いとか (しかし XHTML ではやっぱり駄目だったりとか) 、本当はいろいろあるのですよね。でも、「面倒だから」全部変換するという。

 DOM でやってしまうという方法は、こういうことも一切考えなくて良くなるので、その意味でも楽ですね。

[3322] Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」

えむけい (2006年1月9日 1時14分)

>>http://wp.netscape.com/eng/mozilla/3.0/relnotes/windows-3.03.html

>>の「JavaScript Evaluation in HTML」を参照。

>>ネスケ4と言いつつネスケ3のリリースノートですが、ネスケ4まではありました。

>

> いちおう、HTML4 の仕様でも言及されてはいます。

>

>http://www.w3.org/TR/1999/REC-html401-19991224/appendix/notes.html#h-B.7.1

SGML的にはこういうのってアリなんでしょうか。satoshiiさん【誰】あたりが詳しそうですが。

[3323] Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」

rna (2006年1月9日 22時18分)

>ちなみに&に対して何もしないとネスケで任意のスクリプトが実行可能

>ですが、さすがに古すぎて説得力がいまいちのようです。

2002年頃ひろゆきにメールしましたが、納得してくれませんでした。

「特定ユーザーのレベルの話しなので、特定ユーザーのほうで

処理してもらえれば」というお返事でした。。。

[3328] Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」

りゅう (2006年1月10日 17時27分)

> という必要があるので、状況に応じて危険な文字を削除したり、逆にそのまま使っ

> たりしなければなりません。つまりは意識的に「サニタイズ」しなければならない

> ということだと思うのですが……。これを「サニタイズせよ」と言わなくて済むよ

> うな解決策ってあるのでしょうか。

「入力された値が許容範囲外であることを検出してエラーにする」ことも「サニタイズ」と呼ぶ派のばけらさん相手だと説得力を発揮しないのですが、ほとんどの場合は危険と思われる文字を黙って除去して使用するよりも、明示的にエラーにする方がより適切な対応です。それは値が示すものが変わってしまうような変換や除去処理はなるべく避けるべきだからです。たとえばパス名から ../ を除去すると確実に内容が変わってしまいます。処理後のパス名がたまたま有効なものになる可能性もありますが、それがユーザーの意図したものかどうかは分かりませんし、攻撃者によるものなら間違いなく意図したものではないでしょう。

なので通常はサニタイズは不要なのです。

で、パス名の処理ですが、ファイルシステムのパス名と同等の仕様のものとして扱うから ../ 混じりのパス名は正しいが汚染されているということになるわけです。別途定める仕様のパス名が指定されているとすれば ../ 混じりのパス名は単に誤った形式となるので、汚染された云々という概念が出てこなくなります。そして別途定める仕様のパス名をファイルシステムにマッピングするためのマッパーが「誤った形式」とか「マッピング不能」といったエラーを返すようにすればいいわけです。

といったところが「サニタイズ言うな」キャンペーンの真髄かと。

[3329] Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」

y-Aki (2006年1月11日 12時53分)

>>ていうか、

>>http://nogue.cocolog-nifty.com/diary/2004/02/_ihtml.html

>>でも表明してますが、(i-mode実機については確認してませんが)少なくとも「i-modeシミュレータ」という名のブラウザについては、

>>http://www.ne.jp/asahi/minazuki/bakera/html/opinion/ampersand

>>の指示を守ると、かえってトラブルを起こす(カウンタを表示しなくなる)ことがわかっている。

>パラメータは ; で区切ろう!<http://bakera.jp/html/opinion/perl.html>

実体参照が解釈されないブラウザにも対応するために&と;を区切り文字として使用できるようにしようということかなと…

&amp;がampというパラメータが指定されていると解釈できるように。

もちろん;で区切ってもいいですが。

[3366] Re: 「サニタイズ言うなキャンペーンがわかりにくい理由」

えむけい (2006年2月2日 19時51分)

http://takagi-hiromitsu.jp/diary/20060115.html#p01

「第一種サニタイズ」「第二種サニタイズ」「第三種サニタイズ」とか名付けて定義して使い分けるとか【謎】。

新規投稿フォーム

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

:

:

:

最近の日記

関わった本など