デフォルト重要
フレームワークやテンプレートエンジンには、クロススクリプティング対策の仕組みが標準装備されているのは、もはや常識ですが、これがデフォルトになっているものはほとんど見かけません。
Rails(erb)の場合
<%=h person.name %>
Velocityの場合
$escape.getText($string)
Perl Templateの場合
[% FILTER html %] [% var1 %] [% END %]
これらは、どれもプログラマが意識的にコードを書かなくてはいけません。特に泥沼の開発の現場では、サニタイジング漏れが発生しそうな臭いがします。
これからはデフォルトでサニタイジング処理を一律かける・かけないが選べて、さらに必要に応じてその処理を追加したり、外したりすることができるように設計すべきだと思うのです。
○Controller側 template.default_escape = true var1 = '<B>あああ</B>' ○View側 $var1 $var1.noescape() ○実行結果 <B>あああ</B> <B>あああ</B>
こんな感じです。
フレームワーク・テンプレートエンジンのデフォルトをtrueにしておけば、サニタイジング漏れは激減します。
セキュリティはデフォルト重要