Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 树枝逃生(';js';)symfony2_Javascript_Html_Symfony_Twig - Fatal编程技术网

Javascript 树枝逃生(';js';)symfony2

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

假设我有一篇包含内容的文章(内容有html标记)。。因此:

看起来不错

问题是,若用户添加脚本标记,那个么我会尝试这样做

{{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向量,并为您留下一个可通过原始过滤器安全输出的变量。

在中测试

{{test

const me=“hi”| raw} {{{p>test

const me=“hi”{e('js')} {{{p>test

const me=“hi”{e('html')} {{{p>test

const me=“hi”'e('html_attr')} {{{p>test

const me=“hi”{124; striptags} {{{p>test

const 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')}}