エスケープ処理
エスケープ処理は、ユーザー入力等に由来する文字列が(サイト管理者の)意図しない動作をすることを防ぐための処理です。クロスサイトスクリプティングなどの攻撃を防ぐためにも、既にエスケープ処理がされていると判明しているデータ以外は、出力する前に必ずエスケープ処理を行いましょう。
Zend_Viewではescapeメソッドがエスケープ処理を行ってくれます。エスケープ処理を行う方法は簡単で、エスケープしたい文字列をescapeに渡すと、処理済みの文字列が返って来ます。
$escapedString = $view->escape($userInputString);
エスケープ処理の設定
実は、このescapeメソッドは、標準ではPHPのhtmlspecialchars関数を呼び出しています。直接htmlspecialcharsを使うのと比べてZend_Viewのescapeメソッドを使うとエスケープ処理をZend_Viewでまとめて管理できるというメリットがあります。エスケープ処理を行う上での文字コードを設定などは、Zend_Viewのパラメータとして管理できます。
例えば文字コードにShift JISを使用し、エスケープ処理を行う関数をhtmlentitiesに変更したい場合には、次のようになります。
... $view->abc = array('a', 'b', 'c'); // データの設定 $view->setEncoding('Shift_JIS'); $view->setEscape('htmlentities'); $view->setScriptPath('.');// ビュースクリプトの設置してある場所 ...
htmlspecialcharsもhtmlentitiesもどちらもエスケープ処理を行うという意味では似たような関数ですが、htmlspecialcharsは標準では&、<、>、"の4つの記号のみをエスケープするのに対し、htmlentitiesは100種類の記号をエスケープします。