javascript - Twig 转义 ('js' ) symfony2

标签 javascript html symfony twig

假设我有一篇文章(内容有 html 标签).. 所以:

{{article.content|raw}}

看起来不错。

问题是如果用户添加脚本标签 - 所以我尝试这样做

{{article.content|raw|e('js')}}

它逃脱了所有..我的意思是html等等..

我得到双重转义文本,我不再有任何 html 标签,它们都被转义了..这是某种 Twig 错误还是什么?

例子: 我有"<p>test</p>"

{{article.content|raw}}我将看到 {{article.content|raw|e('js')}} 的“测试”我会看到 "\x3Cp\x3Etestas\x3C\x2Fp\" .那怎么了?我知道我可以在服务器端转义脚本标签,但我很想知道我的方法有什么问题..

最佳答案

使用转义过滤器时,您使用了错误的工具来完成这项工作。对于您所写的内容,“原始”过滤器什么都不做,并且转义符会转义您正在输出的字符串,以便它适合作为数据包含在输出的 Javascript 部分中。

您正在寻找的是像 HtmlPurifier 这样的 XSS 过滤器.一旦你使用 composer 或直接安装在你的项目中包含一个 XSS 过滤器,你就可以为 Twig 编写一个自定义过滤器,它将过滤掉 XSS 向量,如脚本标签等,并为你留下一个变量,可以通过原始过滤器安全地输出.

关于javascript - Twig 转义 ('js' ) symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26048091/

相关文章:

javascript - Jquery Widget vs Jquery Plugin,区别,什么时候使用哪个?

javascript - 如何从 Firefox 扩展中获取书签列表或可遍历的书签树?

javascript - 如何在 bootstrap vue 中使用 Form Tags 组件时将对象用作标签

Symfony - 在 Controller 中使用参数生成 url

php - 获取表中跨列的记录的总大小 - symfony

php - 自定义 Symfony2 过滤器不使用自定义 Twig 标签触发

javascript - 如何,javascript Pop Under 不在后台弹出

javascript - 如何将文字变成表情符号

html - CSS - 如何使我输入的文本开始显示在框的左上角?

jquery - 链接的响应式水平轮播 - bootstrap-mvc