有没有一种方法可以;“停止脚本”;从使用JavaScript运行开始?
如何停止JavaScript中的脚本执行如果发生跨站点脚本(XSS)攻击,基本要求是注入+执行脚本。有没有一种方法可以;“停止脚本”;从使用JavaScript运行开始?,javascript,html,xss,Javascript,Html,Xss,如何停止JavaScript中的脚本执行如果发生跨站点脚本(XSS)攻击,基本要求是注入+执行脚本。 想象一下,攻击者能够在页面中注入JavaScript&我们的目标是阻止攻击者的脚本执行。例如,注入点可以是任何用户提供的输入区域。始终转义您的输入。对于XSS,使用htmlentities()转义HTML和JS。这里有一篇关于PHP安全性的好文章 在处理XSS时,基本上有两件事需要注意: 退出你的输出。转义输入只会白白占用更多资源。转义用户提交的内容输出。这还意味着非转义内容在数据库中,这是一件
想象一下,攻击者能够在页面中注入JavaScript&我们的目标是阻止攻击者的脚本执行。例如,注入点可以是任何用户提供的输入区域。始终转义您的输入。对于XSS,使用htmlentities()转义HTML和JS。这里有一篇关于PHP安全性的好文章
在处理XSS时,基本上有两件事需要注意:
eval()
正如其他人所说,保护自己不受XSS攻击的最好和最简单的方法是验证输入并根据插入点正确转义输出(很可能是HTML,带有实体或JavaScript/CSS块——不太可能也更难正确转义) 但是,如果您的用例输出的是原始用户输入,它应该包含任意HTML,并且您只想防止注入的JavaScript干扰您的站点,那么您可以: 1) 在不同的、唯一的域中构建内容(因此它不能与主文档共享cookies),例如xyz123.usercontent.com(对于任何用户,xyz123都不同)
2) 等待和/或CSP的sandbox指令在您支持的每个浏览器中被标准化(当然,拒绝访问不可用的浏览器)。您唯一的解决方案是防止注入脚本。要做到这一点,您可以做以下几件事:
render
和render\u
。自3.0以来,Rails有一个类似的接口,它清理所有模板数据,除非您特别要求未初始化的呈现。有一个清晰命名的接口将使您更容易检查模板,并确保未初始化的呈现是例外,这将迫使您在每次将数据转储到模板中时做出决定你不能。前提是它已经被注入。用户可以完全禁用JavaScript,但这是另一种情况:)攻击注入点似乎比检测破坏后JavaScript可能执行的所有方式要好得多。不,请查看您的输出。虽然这是一个很好的建议,但第1点和第4点与XSS无关(不检查输入),而是与SQL注入有关。