Xss HTML和Javascript的金字塔变色龙模板安全性
变色龙模板是否为变量转义/去除XSS和HTML标记?下列物品安全吗Xss HTML和Javascript的金字塔变色龙模板安全性,xss,pyramid,chameleon,zpt,Xss,Pyramid,Chameleon,Zpt,变色龙模板是否为变量转义/去除XSS和HTML标记?下列物品安全吗 <script type="text/javascript"> var initialComments = ${comments}; for (var i = 0; i < initialComments.length; i++) { initialComments[i].userId = initialComments[i].user_id; } var po
<script type="text/javascript">
var initialComments = ${comments};
for (var i = 0; i < initialComments.length; i++) {
initialComments[i].userId = initialComments[i].user_id;
}
var post = ${post}
// ...
</script>
var initialComments=${comments};
对于(var i=0;i
来自:
默认情况下,字符串在插入前转义。要避免这种情况,请使用结构
:前缀
然而,这并不能逃避JavaScript值。使用JSON;在您看来,请使用:
post_json = (json.dumps(post)
.replace(u'<', u'\\u003c')
.replace(u'>', u'\\u003e')
.replace(u'&', u'\\u0026')
.replace(u"'", u'\\u0027'))
1JSON允许,但默认情况下,json.dumps()
函数会转义所有非ASCII码点。来自:
默认情况下,字符串在插入前转义。要避免这种情况,请使用结构
:前缀
然而,这并不能逃避JavaScript值。使用JSON;在您看来,请使用:
post_json = (json.dumps(post)
.replace(u'<', u'\\u003c')
.replace(u'>', u'\\u003e')
.replace(u'&', u'\\u0026')
.replace(u"'", u'\\u0027'))
1JSON允许,但默认情况下,
json.dumps()
函数会转义所有非ASCII码点。这实际上比看起来更难,而且取决于具体情况。如果输出格式是HTML,那么脚本内容是一个特殊的CDATA部分,其中XML/SGML转义不会被解释。如果输出格式为XML,且为XML内容类型,则转义将按预期工作。即使可以对变色龙进行修补,使其能够理解
元素的特殊性,但目前还没有
根据浏览器版本的不同,当一个单一的
时,这实际上比看起来更难,并且取决于具体情况。如果输出格式是HTML,那么脚本内容是一个特殊的CDATA部分,其中XML/SGML转义不会被解释。如果输出格式为XML,且为XML内容类型,则转义将按预期工作。即使可以对变色龙进行修补,使其能够理解
元素的特殊性,但目前还没有
根据浏览器版本的不同,当使用单一的时,这实际上是错误的。JSON不是Javascript子集,给定的代码不正确。与其断言代码不正确,不如告诉我它是如何不正确的json.dumps()
生成作为子集的json。只需尝试在其中写入一个字符串,其中包含alert('powned')
。这实际上是错误的。JSON不是Javascript子集,给定的代码不正确。与其断言代码不正确,不如告诉我它是如何不正确的json.dumps()
生成作为子集的json。只需尝试在其中写入一个字符串,其中包含alert('powned')
。如果使用请确保ascii=False
。不要使用然后确保使用ascii
。有一个原因是你不打开并坚持默认值。如果你不使用Sure_ascii=False,你会得到非常大和不可读的源代码,比如东亚脚本。这是大多数JS插值任务的一个常见问题?对我们来说是,这就是为什么我们关闭了它,并且不得不考虑这个额外的“功能”也是。如果使用请确保ascii=False
。不要使用然后确保使用ascii
。有一个原因是你不打开并坚持默认值。如果你不使用Sure_ascii=False,你会得到非常大和不可读的源代码,比如东亚脚本。这是大多数JS插值任务的一个常见问题?对我们来说是,这就是为什么我们关闭了它,并且不得不考虑这个额外的“功能”也是。你在这里寻找什么额外的细节?你在这里寻找什么额外的细节?
post_json = (json.dumps(foo, ensure_ascii=False)
.replace('\u2028', r'\u2028')
.replace('\u2029', r'\u2029')
.replace('<', r'\u003c'))
post_json = json.dumps(foo, ensure_ascii=True)\
.replace('<', r'\u003c')
${structure: post_json}