【问题标题】:Web-app security: substitution of JavaScript code and dataWeb 应用程序安全性:JavaScript 代码和数据的替换
【发布时间】:2012-01-14 16:46:27
【问题描述】:

现在我正在考虑实现一些代码的 eval()-ing,从服务器动态加载。实际上,任何类型的“eval()”都不是一个好主意(尤其是为了安全)。想到什么:

如果我不使用 SSL 或任何服务器身份验证技术,那么很容易替换我的包并在用户机器上运行任何 JS 代码。现在,当有一些硬件 API (WebGL) 时,它可能 (?) 很危险。

但是,另一方面,如果我以某种方式保护它是没有意义的,因为如果用户从服务器加载页面(来自另一个网站)请求 .js 文件,则网络 JS 代码可能会被简单地替换例如)。

那么,如果我的网络应用程序中没有重要数据 - 我应该实施任何服务器身份验证王吗?

【问题讨论】:

  • 你为什么需要评估这个?
  • js哪里来的,你写的吗?

标签: javascript security web-applications


【解决方案1】:

如果包含eval() 指令的页面和您正在动态加载的 JS 源代码在同一台服务器上,则可能不会因此而降低安全性 - 攻击者可以简单地替换 页面 而不是动态加载的代码,无论你是否使用eval(),都能达到同样的破坏效果。

eval() 动态加载的代码一直在 Javascript 中完成。例如,当你通过jQuery的.load()加载HTML时,其中的任何JS都会被自动提取并eval()ed。

如果您需要eval() 这种方式,我认为您不会添加安全问题(尽管您很可能可以通过更改架构来避免使用它。)

【讨论】:

  • MitM 实际上可以将代码注入网页,恕我直言,您至少应该提到这一点。
  • @Niklas 我 am 提到 - an attacker could simply replace the page instead of the dynamically loaded code 还不够清楚吗?欢迎提出改进建议。我的观点是,如果中间有人,无论如何你都会被搞砸 - 但无论你是否评估动态加载的 JS 代码,都不会让情况变得更糟
  • @NiklasBaumstark - 如果中间人攻击可以替换动态加载的 javascript,那么他们也可能只是更改了主机网页。所以,Pekka 的观点是这里没有新的漏洞。如果 MitM 可以拦截和更改浏览器请求,那么主网页同样容易受到篡改。使用 SSL 将提高对这两种类型的篡改的安全性 - 要求攻击者在能够篡改之前破坏 SSL 请求(不是那么容易)。
  • @jfriend00:这取决于动态加载的javascript是来自同一个服务器还是另一个服务器。
  • @NiklasBaumstark - 正如 Pekka 的回答所说“在同一台服务器上” - 这就是我的 cmets 的上下文。
【解决方案2】:

您对 eval 的使用更加偏执。如果有人可以修改您的服务器响应并获得评估,他们也可以引入新的评估。

如果您只关心通过中间人攻击修改您的响应,那么无论您是否正在评估,都应该使用 SSL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-04
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 2013-03-20
    相关资源
    最近更新 更多