Привет, я разрабатываю приложение с symfony2. и для контроля качества использовалась аналитическая лаборатория sensio. но ошибка, которую я получаю, ставит меня в тупик. это ошибка, которую я получаю:
Использование фильтра raw или блока {% autoescape false%} в шаблоне Twig предоставляет пользователям возможность использования сценариев Cross-Site Scripting (XSS)
мой вопрос - какой фильтр я могу использовать вместо raw?
{% if (value is not iterable and value matches '/^(function|\{)/i') %}{{ value|raw }}{% else %}{{ value|json_encode|raw }}{% endif %};
благодаря
Вы можете создать расширение Twig с помощью специального фильтра (например, с именем jscode
) с вашей логикой и пометить его как безопасный для html, а затем просто использовать:
{% value|jscode %}
Необработанные фильтр существует по причине, так что если вы полностью уверены в том, что будет в value
, вы можете просто продолжать использовать его.
Альтернативный фильтр действительно зависит от того, что вы хотите разрешить или нет; как предположил @Yassine, настраиваемый фильтр, вероятно, является хорошей идеей, поскольку он имеет дополнительное преимущество в том, что вы можете переместить всю логику из своего макета.