Javascript 树枝逃生(';js';)symfony2
假设我有一篇包含内容的文章(内容有html标记)。。因此: 看起来不错 问题是,若用户添加脚本标记,那个么我会尝试这样做Javascript 树枝逃生(';js';)symfony2,javascript,html,symfony,twig,Javascript,Html,Symfony,Twig,假设我有一篇包含内容的文章(内容有html标记)。。因此: 看起来不错 问题是,若用户添加脚本标记,那个么我会尝试这样做 {{article.content|raw|e('js')}} 而它逃避了一切。。我指的是html等等 我得到了双转义文本,我不再有任何html标记,它们都是转义的。。它是某种树枝虫还是什么 例如: 我有“测试” 使用{article.content|raw}我将看到使用{article.content|raw|e('js')}我将看到“\x3Cp\x3Etestas\x3
{{article.content|raw|e('js')}}
而它逃避了一切。。我指的是html等等
我得到了双转义文本,我不再有任何html标记,它们都是转义的。。它是某种树枝虫还是什么
例如:
我有“测试”
使用
{article.content|raw}
我将看到使用{article.content|raw|e('js')}
我将看到“\x3Cp\x3Etestas\x3C\x2Fp\”
。那怎么了?我知道我可以避开服务器端的脚本标记,但我很想知道我的方法有什么问题 使用escape筛选器的作业使用了错误的工具。根据您编写的内容,“raw”过滤器不做任何事情,转义将转义您正在输出的字符串,以便它适合作为数据包含在输出的Javascript部分中
您正在寻找的是类似XSS的过滤器。使用composer或direct installation在项目中包含XSS过滤器后,您可以为细枝编写自定义过滤器,过滤掉脚本标记等XSS向量,并为您留下一个可通过原始过滤器安全输出的变量。在中测试
{{testconst me=“hi”| raw}
{{{p>testconst me=“hi”{e('js')}
{{{p>testconst me=“hi”{e('html')}
{{{p>testconst me=“hi”'e('html_attr')}
{{{p>testconst me=“hi”{124; striptags}
{{{p>testconst me=“hi”{striptags}raw}
/*
测试const me=“hi”
\u003Cp\u003Etest\u003C\/p\u003E\u003Cscript\u003Econst\u0020me\u0020\u003D\u0020\U002HI\u0022\u003C\/script\u003E
ptest/pscript const me=“hi”/script
ptest&x2F;pscript常量 ;我 = ;“嗨”/;剧本
testconst me=“嗨”
testconst me=“嗨”
*/
你在生孩子之前试过逃跑吗?是的,我试过。。相同..你为什么要逃避js?我的意思是,如果你想以html或js的形式显示内容,只需通过raw
打印即可,用户将能够编写该内容,即html。。我的意思是他可以写这篇文章,我会检查并确认。。若我不逃避js,那个么用户可以像ajax查询一样编写,因为我将加载那个页面,它将作为管理员,我可能会造成一些伤害:)
{{article.content|raw|e('js')}}