如何在JavaScript中停止执行脚本? 在跨站点脚本(XSS)攻击的情况下,基本要求是注入+执行脚本。
想象一下,攻击者能够在页面中注入JavaScript 的情况。我们的目标是阻止攻击者的脚本执行。注入点作为示例可以是任何用户提供的输入区域。
答案 0 :(得分:0)
始终逃避您的输入。对于XSS,使用htmlentities()来转义HTML和JS。这是一篇关于PHP安全性的好文章
答案 1 :(得分:0)
在处理XSS时,基本上要注意两件事:
eval()
或类似的东西来包含一些缺陷。答案 2 :(得分:0)
正如其他人所说,保护自己免受XSS攻击的最佳和最简单的方法是验证输入并根据插入点正确转义输出(HTML,很可能是实体或JavaScript / CSS块 - 不太可能,更难以正确逸出)。
但是,如果您的用例输出的原始用户输入应该包含任意HTML,并且您只是想阻止注入的JavaScript弄乱您的网站,您可以:
1)将内容框架在一个不同的,唯一的域中(因此它不能与主文档共享cookie),例如xyz123.usercontent.com(xyz123对任何用户都不同) 2)等待和/或CSP的沙箱指令在您支持的每个浏览器中标准化(当然,拒绝访问无法访问的浏览器)。
答案 3 :(得分:0)
您唯一的解决方案是防止脚本被注入。您可以采取以下措施来实现这一目标:
render
和render_unsafe
中使用两个明确命名的渲染函数来实现此目的。 Rails自3.0以来具有类似的界面,它会清理所有模板数据,除非您特别要求进行未经过抽样的渲染。拥有一个明确命名的界面将使您更容易控制模板,并确保每次将数据转储到模板时,未经过抽样的渲染都会迫使您做出决定。