ikepyonのだめ人間日記

セキュリティに関することを書いていく予定。

安全なWebアプリのために言語ができること

http://www.rubyist.net/~matz/20080129.html#p02
ちと気になったのでメモ。

ORマッパーによるDBへのアクセスというのは、DBのデータを抽象化してくれるので便利だとは思うのだけど、かなりオーバーヘッドが大きいと思う(実際のところはコード読んでないのでわからないのだけど)ので、使い勝手が悪いと思う。それより、バインドメカニズム(Prepared Statement)しか使えないとしたほうがいい気がする。

あとは、レスポンス出力時にデフォルトではエスケープ処理して出力、タグを使いたい場合は明示的に宣言しないと出力しないという風にするとかなのかなぁと思う。
例えばこんな感じ。

<%=hoge >

とするとエスケープされたhogeの値が出力される。

とするとタグを含んでhogeの値が出力される。って感じで。可能なら、前後のHTML構造を解釈して、適切なエスケープをしてくれるとなおベスト(そういうのができるか疑問だけどw)。まあ、こうしても、全て「」って書かれてしまうと意味がないのだけど、ケアレスミスによる脆弱性の混入は防げるんじゃないかと。
これがテンプレートシステムによる出力なのかな?

PHPに関しては、なんちゃってセキュリティ対策が多いのが問題だと思うんだよねぇ。言語仕様として、マルチバイトとシングルバイトの取り扱いが違うというのも気持ち悪いし・・・