高木浩光さんのところで以前から盛りあがっている「サニタイズ言うなキャンペーン」に密かに賛同しているのですが、やはり入力段階でHTML実体参照への書換処理をやっているCGIが多く存在していた事が、「サニタイズは入力段でやるべきもの」という誤解を助長してしまったのが背景としてあるのではないかと思っています。
でも個人的には、例えばPerlなら、HTML::Template*1やTemplate-Toolkit*2を使ってテンプレート展開する際に、HTMLやJavaScriptで必要とされる実体参照への変換処理が出来るわけですし、DBIを使ってSQLクエリを発行する場合にも、SQL文字列を直接触るのではなくプレースホルダを利用する方が、パラメータだけ異なるSQLを複数回実行する場合には性能的なメリットもあるわけです。また、最近はClass::DBIやDBIx::ClassのようなORM層を使うことで、エスケープ処理のようなものをほとんど気にする必要すらないわけです。これこそ良いカプセル化ですね。
というわけで、「どうすればいいのか」という手法が一般化さえしてしまえば、こちらの方が簡単だと思うわけです。