CakePHP サニタイズ

画面表示するためのサニタイズのお話です。
色々やり方はありますが、CakePHPを使用しているとき、私はこんなやり方をしてます。

・set関数をオーバーライドして、サニタイズを埋め込む

このやり方のメリットは、
だれがやっても必ずサニタイズされることです。

逆にデメリットは、
タグがつかえないことですね。
コントローラー内でタグ付きのsetはするなってことです。

class AppController extends Controller {
    public function set($var, $val = null, $sanitize = true)
    {
        if ($sanitize) {
            $val = $this->__sanitize($val);
        }

        return parent::set($var, $val);
    }
    
    private function __sanitize($dat){
        if (is_array($dat)) {
            foreach ($dat as $cnt=>$val) {
                $dat[$cnt] = $this->__sanitize($val);
            }
            return $dat;
        } else {
            return htmlspecialchars($dat);
        }
    }
}