Smarty では、変数 $security に TRUE をセットすることにより、テンプレートファイルに記載された内容の展開を制限し、セキュリティレベルを(多少)上げることができる。
$smarty = new Smarty; $smarty->security = TRUE;
ただ、それだと使い勝手が悪くなることがあるので、$security_settings を使うことにより、指定した機能の動作を許可することができる。
ということはすぐ分かったのだが、マニュアルを見ても具体的な指定方法が書いてなかったので少し悩んでしまった。結局、$security_settings の配列のキーに、各設定の名称を書けば良いようだ。こんな感じ。
$smarty->security_setting['IF_FUNCS'] = array('isset');
これで、$security == TRUE の場合でも、{if isset($hoge)} と書くことができる。