一种可能的解决方案是从Smarty_Security
类扩展并使用该方法启用安全性
$smarty->enableSecurity($instanceOfClass)
一旦调用了 fetch 方法,disableSecurity
方法就会再次重新启用所有方法plugins/tags/modifiers
。
不幸的是,当使用 enableSecurity 并使用禁止的功能时,会抛出异常
另一种方法是在调用之前使用{literal}{forbiddenTags}{/literal}替换您想要禁止的所有标签/变量/...preg_replace
$smarty->fetch([...])
例子
# negate regular expression pattern to allow only the below tags
$pattern = "/\{(?!allowedTag1|allowedTag2).*?\}/";
$replacement = '{literal}$0{/literal}';
$content = preg_replace($pattern, $replacement, $content);
$smarty->fetch("string:" . $content);
有关此处安全类的更多详细信息:http ://www.smarty.net/docs/en/advanced.features.tpl