php Symfony2替代过滤器用于原始

时间:2015-08-11 10:22:21

标签: php symfony twig

您好我正在使用symfony2开发应用程序。并且用于质量控制使用了sensio实验室的洞察力。 但是我得到的错误让我感到茫然。这是我得到的错误:

在Twig模板中使用原始过滤器或{%autoescape false%}块会将用户暴露给跨站点脚本(XSS)攻击

我的问题是我可以使用什么过滤器而不是原始的?

{% if (value is not iterable and value matches '/^(function|\{)/i') %}{{ value|raw }}{% else %}{{ value|json_encode|raw }}{% endif %};

感谢

2 个答案:

答案 0 :(得分:2)

您可以使用自己的逻辑创建自定义过滤器(例如名为jscode)的Twig extension并将其标记为safe for html,然后使用:

{% value|jscode %}

答案 1 :(得分:1)

原始过滤器存在是有原因的,所以如果您完全确定value中的内容,您可以继续使用它。

替代过滤器实际上取决于您想要或不允许的内容;正如@Yassine建议的那样,自定义过滤器可能是一个好主意,因为它具有额外的优势,可以将整个逻辑移出布局。