Ruby on Railsのセキュリティ
Ruby on Railsというフレームワークを知っていますか?
ここ数年話題になっているので、Webアプリケーション開発者は知っていると思います。
フレームワークとは読んで字の如く「枠組み」で、Webアプリケーション開発においては、
その一定の枠組み内で効率的にアプリケーションを作ることができる仕組みを表します。
昨日、WASF(Webアプリケーションセキュリティフォーラム)のカンファレンスがあり、
話題のRuby on Railsのセキュリティについてのお話がありました。
私自身は、Rubyも書きますけれどPython派ですのでRails自体は使ったことがないのですが、
なかなか興味深い話が聞けました。
私としては、
「O/Rマッパー(ActiveRecord)を使っても、SQLインジェクションは発生しうる」
という点が新鮮(?)でした。conditionsに直接SQLを指定できるんですね。
# というかRailsの場合、検索にはそれが必須?のようで…。
# SQLを意識しないのがO/Rマッパーの利点だと思っていたのですが…。
# instance.search("abc")とかinstance.contains("abc")とかで探すとばかり思っていました…。
今までSQLインジェクション対策として、「O/Rマッパーを使う」という事を言ってきましたが、
改める必要がありそうです。「O/Rマッパーを使う、ただし実装による」。
また、RubyのTaint機能(変数の汚染状況のチェック機能)は強力なのですけれど、
これに依存しすぎていないか?と思ったりします。
パラメータ汚染の有無以外にもリスクは存在するので(例えばセカンドオーダーインジェクション)、
Viewの際のデフォルトでの挙動は変数をエスケープ済みのものにした方がよい気がします。
あと、変数のvalidationはどうなっているのでしょうね。taint任せでvalidationは任意なのでしょうか。
こちらは聞き忘れてしまいました。
手軽に高速にWebアプリケーションが作れるのは素晴らしいのですが、セキュリティの視点からすれば、
もうちょっと強制力のあるフレームワークにして貰いたいと思っています。
トラックバック
このエントリーのトラックバック:
http://news.brain-gate.net/mt-tb.cgi/311

