如何防止注入的JavaScript文件引用代码在我的网页中运行?

时间:2012-04-24 09:12:47

标签: javascript security gmail code-injection javascript-injection

我不知道是否可以阻止将JavaScript参考文件脚本注入网页,但我看到网站阻止您在注入的JavaScript参考文件脚本中运行函数,除非它是JavaScript页面注册。例如,我能够向Google Mail注入10个带有不同前缀的不同JQuery脚本(具有不同版本),但是它们可以很好地阻止您执行某些JQuery命令。你可以做一些,但只能获取数据(不是设置数据)..例如$ jquery171('html')。html()(它只是查看页面的源)。如何阻止其他脚本在我的网页中运行,就像在Google Mail中一样?有人曾经这样做过吗?

1 个答案:

答案 0 :(得分:2)

您所谈论的漏洞称为Cross-site Scripting;简称XSS。 OWASP的top ten project还将向您介绍作为Web应用程序开发人员应该注意的其他常见攻击。

要保护您自己的代码免受XSS攻击,您必须永远不要将用户提交的数据打印到提供的输出HTML页面。您必须根据HTML结构中打印用户数据的位置,以依赖于上下文的方式对数据进行编码。请注意,所有不属于您自己程序的数据都应视为不受信任 - 包括HTTP标头,URL,Cookie,表单POST数据以及来自“外部”系统(如数据库)的数据。

请参阅XSS Prevention cheat sheet以充分了解HTML输出的输出编码的基本原理。

你是否认为自己是恶意的,你对谷歌的做法是非法的。您正在有效地执行[部分]渗透测试,以确定其代码对XSS的漏洞。虽然GMail可能不会过多关注这类事情 - 当然,他们必须处理恶意垃圾邮件HTML电子邮件 - 其他一些网站的所有者肯定会这样做;人们在美国被逮捕并被指控的远远低于你所描述的。

开发自己的网站进行测试。您无权测试其他人的安全性。考虑查看WebGoatGruyere等项目,为您提供法律允许攻击的环境。