【发布时间】:2015-12-24 13:22:04
【问题描述】:
假设我想通过动态<script> 元素向我的客户提供一些数据(在第一个响应中,没有延迟)。
<script><%= payload %></script>
假设payload 是字符串var data = '</script><script>alert("Muahahaha!")';</script>。结束标记 (</script>) 将允许用户将任意脚本注入我的页面。如何正确清理脚本元素的内容?
我想我可以将</script> 更改为<\/script> 并将<!-- 更改为<\!--。我还需要逃脱其他危险的字符串吗?有没有更好的方法来提供这种“冷启动”数据?
【问题讨论】:
-
服务器端是什么语言?
-
将数据编码为 JSON ...?
-
肯定有什么要解释的。也就是json是如何神奇地转义html的?它肯定不会。几乎每个框架都有使字符串 html 安全的方法,但只是说“json 会修复它”是完全错误的。
-
@ChristianVarga OP 并不担心字符串会被终止,他担心
-
stackoverflow.com/questions/1659749/… 这里有人遇到了由此产生的问题。那是 2009 年,也许从那时起浏览器变得更智能了,说实话我不知道。那里给出了一种解决方案。我首选的解决方案是不传递这样的数据,而是将其放置在
data属性或隐藏字段中,但我想它不能回答问题。
标签: html xss sanitization