taint機構を生かしたRailsプラグイン
Rails のアプリケーションで DB や HTTP リクエストから取ってきた文字列を rhtml で出力するときに h メソッドなどでエスケープしないとエラーを出すというプラグインを作ってみました。
http://d.hatena.ne.jp/kstn/20060708/1152345246
taint機構のあるRubyでは、こんなプラグインも作りやすいんでしょうね。
以前、この日記に:
ひるがえってRailsの場合どうかと考えると、素のPHPよりは確かにだいぶましなんだろうけど、テンプレート中の「h」を誤って消してXSS発生、なんてこともちょっとはあるんじゃないかな?そんなもの、消した人が悪いに決まってるんだけど、そんな細かいところまで含めてケアしているフレームワークがあれば良いなあ、と思いました。知らないだけかな。
まつもとさんからレスポンスが! - 岩本隆史の日記帳
と書きましたが、そのものズバリがあったということになります。
ちなみに「Webアプリケーションセキュリティフォーラム - Journal InTime(2007-07-05)」のスライドで、上記プラグイン(Safe ERB)のデータアクセス版ともいうべき「SafeRecord」が紹介されています。というか、このスライドでSafe ERBを知ったんですが。
Rubyがますます輝いてみえる今日この頃です。