« PHP 5.3の名前空間仕様が変更されましたホワイトリストと出力 »

4 comments

Comment from: totoro [Visitor]
前回のディスカッションでは、ホワイトリスト否定派が多かったような気がします。
うちで扱ってる製品も、ホワイトリストを搭載してます。
一部の方は、ホワイトリストでは万全な対応が出来ないような解釈をされていますが、WAFの設置場所が微妙に違うと思うんですが・・・。
WEB - WAF - DB とすれば、DBに到達する様々な悪意有る行動を停められますし、WEBとDBの間にあるからこそ、WEBアプリの仕様次第で、完全なホワイトリストが設定できるんじゃないかと思います。
XSSやCSRF等は停められませんが、SQLインジェクション系はすべて停められると思うんですが、こういう考えはあのパネラーには、無かったのでしょうか。
2008/10/03 @ 12:53
Comment from: Yasuo Ohgaki [Member] Email · http://www.ohgaki.net/
紹介していただいたタイプの製品であれば、ほぼ100%SQLインジェクションを防止することが可能ですね。ホワイトリストの定義もSQL実行のログから生成すれば、半自動でリストの定義もできるように作る事も可能でしょう。DBMSをSQLインジェクションから守ることだけを目的としたアプリケーションファイアーウォールがあっても良いと思います。

この製品とWAFとの違いは、DBMS専用であるかないか、ですね。

WAFの問題は検査対象の入力が複数の用途に利用され、出力される事がほとんどであることです。HTML、XML、SQLなど出力先が複数でその出力先にあったエスケープ処理を行わないと、安全性を維持できません。しかし、エスケープ方式や出力時の制約が異なるので全てを守る事は不可能です。つまりダメなアプリはWAFでは守れないことを意味します。「WAFで守る」というよりは「WAFで予防する」(未知の脆弱性を予防する)という考え方で使用すべきです。

2008/10/05 @ 10:59
Comment from: sanaki [Visitor]
Firewall の[インバウンド|アウトバウンド]を、プログラムの[データの入力|データの出力]に関連付けて考えるのは無理があると思います。

なぜ、そこまでして「ホワイトリスト」という言葉にこだわるのでしょうか?

単純に「勘違いしてました」で済む話だと思うのですが・・・
2008/10/07 @ 21:19
Comment from: Yasuo Ohgaki [Member] Email · http://www.ohgaki.net/
> 単純に「勘違いしてました」で済む話だと思うのですが・・・

勘違いとはどこを勘違いしているのでしょうか?
勘違いしているのはあなたの方ではないでしょうか?

プログラマには出力時に変数の安全性に十分な注意をしていない人が多過ぎます。最も分り易いと思われるコンセプトが変数をホワイトリスト方式で取り扱う方法です。

変数の取り扱いがいい加減なプログラマの方でどのように変数を取り扱えばより安全なコードとなるか理解できない方なら、勘違いしている、と思っても仕方ないかも知れません。

ホワイトリストとブラックリストは元々、入力用のチェックリストの作り方のコンセプトを表す用語だという事は初めから百も承知です。用語を元々の用途から拡張して使うのはごく普通の事です。「間違っている」とか「勘違いしている」ととらえるのは頭が固過ぎるように思えます。
2008/10/18 @ 17:35

Leave a comment


Your email address will not be revealed on this site.

Your URL will be displayed.
PoorExcellent
(Line breaks become <br />)
(Name, email & website)
(Allow users to contact you through a message form (your email will not be revealed.)