php 原始的 Symfony2 替代过滤器
php Symfony2 alternative filter for raw
您好,我正在使用 symfony2 开发应用程序。对于质量控制,使用了 sensio lab insight。
但是我得到的错误让我目瞪口呆。这是我得到的错误:
在 Twig 模板中使用 |raw 过滤器或 {% autoescape false %} 块会使用户暴露于跨站点脚本 (XSS) 攻击
我的问题是我可以使用什么滤镜来代替原始滤镜?
{% if (value is not iterable and value matches '/^(function|\{)/i') %}{{ value|raw }}{% else %}{{ value|json_encode|raw }}{% endif %};
谢谢
您可以创建您的 Twig extension with a custom filter (e.g. named jscode
) with your logic and mark it safe for html,然后只需使用:
{% value|jscode %}
原始过滤器的存在是有原因的,所以如果您完全确定 value
中的内容,您可以继续使用它。
替代过滤器实际上取决于您要允许或不允许的内容;正如@Yassine 建议的那样,自定义过滤器可能是个好主意,因为它具有额外的优势,您可以将整个逻辑移出布局。
您好,我正在使用 symfony2 开发应用程序。对于质量控制,使用了 sensio lab insight。 但是我得到的错误让我目瞪口呆。这是我得到的错误:
在 Twig 模板中使用 |raw 过滤器或 {% autoescape false %} 块会使用户暴露于跨站点脚本 (XSS) 攻击
我的问题是我可以使用什么滤镜来代替原始滤镜?
{% if (value is not iterable and value matches '/^(function|\{)/i') %}{{ value|raw }}{% else %}{{ value|json_encode|raw }}{% endif %};
谢谢
您可以创建您的 Twig extension with a custom filter (e.g. named jscode
) with your logic and mark it safe for html,然后只需使用:
{% value|jscode %}
原始过滤器的存在是有原因的,所以如果您完全确定 value
中的内容,您可以继续使用它。
替代过滤器实际上取决于您要允许或不允许的内容;正如@Yassine 建议的那样,自定义过滤器可能是个好主意,因为它具有额外的优势,您可以将整个逻辑移出布局。