2009-10-13
■ [rails] Rails3に「デフォルトでHTMLエスケープする機能」が入ったらしい
ERBでは「<%= foo %>」がエスケープなし、「<%= h foo %>」がエスケープありですが、 Rails3のtrunkで、デフォルトでHTMLエスケープを行う機能が入ったそうです。
安全のために「<%= foo %>」の方をエスケープありにすべきだろうという議論は前からあって、 実装もErubis(オプションで可能)とか SafeERB*1 *2とか あったわけですけど、できればRails標準でそうなってた方が良いし、その変更を入れるなら確かにバージョン2→3の今しかない気がします。
エスケープを無効にするにはString#html_safe!を呼ぶか、プラグインで「<%= raw foo %>」のように書けるみたいです。
これがデフォルトになると、Rails2.xのコードがそのまま動かなくなるわけですが、まだ開発版なので、実際には
- オプションを付けると古い挙動にできる
- オプションを付けると新しい挙動になる
- やっぱり取り下げられる
などいろいろな可能性が考えられます。今後も要注目ですね。
そういえばRails 3のMLってあるんでしょうか?http://groups.google.com/group/rubyonrails-core ?