デフォルト重要

フレームワークやテンプレートエンジンには、クロススクリプティング対策の仕組みが標準装備されているのは、もはや常識ですが、これがデフォルトになっているものはほとんど見かけません。
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()

○実行結果
&lt;B&gt;あああ&lt;/B&gt;
<B>あああ</B>

こんな感じです。
フレームワーク・テンプレートエンジンのデフォルトをtrueにしておけば、サニタイジング漏れは激減します。

セキュリティはデフォルト重要