« 入門書の書き方SpamメールでのWMF攻撃 »

5 コメント

コメント from: Yasuo Ohgaki [メンバー] メール · http://www.ohgaki.net/
ところで「貧民的プログラム」と言われると、私も貧民的プログラムと言われるようなコーディングになっていますね。

PHPのコードではhtml出力はドキュメント全部を生成してから出力するようにしています。テンプレートに利用する値は、テンプレートに適用する直前、選択的にhtml用出力に変換しています。

echo, printで部分的にHTMLを出力していれば必要な箇所でechoとecho_rawを組み合わせることも出来ますが、現在のテンプレートシステムでは無理ですね。テンプレート適用直前に処理を行っているのでXSS問題が起きるかどうかチェックするのは簡単ですが。
2006/01/02 @ 17:37
コメント from: Yasuo Ohgaki [メンバー] メール · http://www.ohgaki.net/
と、書いて自分でバカなことをしていたのに気が付きました。HTML用に出力する値の配列で、そのまま出力する要素以外は全部HTML用に変換してしまうよう(Nagative -> Positive)に変更すれば良いだけですね。随分前に書いたライブラリだったので自分でも気が付いてませんでした。コードはNegative Security、使い方はPositive Securityだったのですが、それほど手間のかかる変更ではないのでこの際コードの方を変えてしまう事にします。
2006/01/02 @ 17:50
コメント from: Yasuo Ohgaki [メンバー] メール · http://www.ohgaki.net/
自分でもセキュリティ対策系の本を執筆中なので「あれ」ですが、OWASP Guideは必読です。もしWeb開発者で読んでない方、是非一度読まれることをお勧めします。すばらしい事に日本語版もあります。(私は英語版しか読んでいませんが)
2006/01/02 @ 18:13
コメント from: Yasuo Ohgaki [メンバー] メール · http://www.ohgaki.net/
貧民的プログラムの対極に富豪的プログラムがあると思います。富豪的プログラムでよく見かけるはORMでリクエスト毎にルックアップテーブルとなるオブジェクト生成を繰り返す、とかSQLで書けば効率的に実行できるのに何千何万何十万ものオブジェクトを生成して.... 等ではないでしょうか? ORMはセキュリティ向上の一つの処方箋でもありますがDoSもセキュリティ問題です。富豪的プログラムはクライアント環境では問題ないコードでもWeb環境では問題になるので注意が必要です。DoSとSQLインジェクション、どっちがましかと言われればDoSの方がましですが。
2006/01/03 @ 02:52
コメント from: Yasuo Ohgaki [メンバー] メール · http://www.ohgaki.net/
-eche, print, printf: 自動的にHTML用に出力
-echo_raw, print_raw, printf_raw: ダイレクトに出力

これを実施した場合、移行期の互換性をどう確保するのか少しだけ考えてみました。echo, printは関数ではないので関数テーブルを書き換えるモジュールも作れないですね。今の言語仕様だとecho, printはコンパイル時に処理しなければならないのでINI_SYSTEMのスイッチで変更しなければなりません。INI_SYSTEMの設定項目はホスティング環境で問題になります。仕方がないのできっぱり割り切って互換用の設定などは考えないのが良いかな?
2006/01/03 @ 03:03

コメントを残す


Your email address will not be revealed on this site.

頂いたURLは表示されます。
PoorExcellent
(改行が自動で <br /> になります)
(Name, email & website)
(ユーザに、メッセージ・フォームを通じた連絡を許可します (あなたのメール・アドレスは表示されません))