cakephp2.doc_002
最終投稿日:2019年11月20日
<?php
App::uses('Controller', 'Controller');
class AppController extends Controller {
//クロスサイトスクリプティング(XSS)対策
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,ENT_QUOTES); //サニタイズする
}
}
}
?>
逆にset時にサニタイズしたくない場合は3番目の引数にfalseを指定すればそのまま出力してくれます。
$this->set('auth',$this->Auth->user(),false);
~htmlspecialchars メモ~
string htmlspecialchars( string string [, int quote_style [, string charset ]] )
& &amp; 常に変換される
< &lt; 〃
> &gt; 〃
" &quot; quote_styleの設定による。デフォルトでは変換される。
' &#039; quote_styleの設定による。デフォルトでは変換されない。
"(ダブルクォート)または'(シングルクォート)を変換するかどうか。
デフォルトにはENT_COMPACTという値が設定されていますので、
ダブルクォートは変換されますが、シングルクォートは変換されません。
quote_styleの指定には以下の定数を使用します。
ENT_COMPAT 2 "は変換するが、'は変換しない(デフォルト)
ENT_QUOTES 3 両方変換する
ENT_NOQUOTES 0 両方変換しない