【问题标题】:Javascript hijacking, when and how much should I worry?Javascript 劫持,我应该担心什么时候担心多少?
【发布时间】:2011-07-21 13:47:18
【问题描述】:

好的,所以我正在开发一个已经开始更加 ajaxified 的网络应用程序。然后我读了一篇关于javascript hijacking 的博客,我有点困惑什么时候它实际上是一个问题。我想澄清一下

问题 1: 这是问题/漏洞吗?

如果我的网站返回带有敏感信息的“GET”请求的 json 数据 信息,然后该信息可能会落入坏人之手。

我使用 ASP.NET MVC,返回 JSON 的方法要求您明确允许 json get 请求。我猜他们正试图从这个安全漏洞中拯救外行。

问题 2: 劫持是否通过嗅探/读取通过互联网发送的响应而发生? SSL 能否缓解这种攻击?

问题 3: 这导致我问自己这个问题。如果我将页面状态存储在页面的本地 javascript 对象中,有人可以劫持该数据(登录用户除外)吗?

问题 4: 我可以通过仅返回带有“POST”请求的 JSON 来安全地缓解 THIS 漏洞吗?

【问题讨论】:

  • 您需要搜索的术语是“Cross Site Scripting”(XSS)和“Cross Site Request Forgery”(CSRF)。这不是一个漏洞,它们是两个独立的漏洞。
  • @zzzzBov 特定漏洞是滥用 JS 引擎,而不是 XSS 或 CRSF

标签: javascript security csrf


【解决方案1】:

您链接到的帖子正在谈论 CSRF 和 XSS(请参阅我对问题的评论),因此在这种情况下:

这是问题/漏洞吗(“如果我的网站返回包含敏感信息的 'GET' 请求的 json 数据,那么该信息可能会落入坏人之手。”)?

没有。

是否通过嗅探/读取通过 Internet 发送的响应来进行劫持?

没有。

如果我将页面状态存储在页面的本地 javascript 对象中,有人可以劫持该数据(登录用户除外)吗?

这取决于。这取决于您是否将数据存储在 cookie 中并且没有设置正确的域或路径。这取决于客户端浏览器上是否存在允许脚本访问通常受限制的数据的安全漏洞。还有许多其他的攻击媒介,并且一直在发现新的攻击媒介。总而言之:不要相信浏览器有任何机密或安全数据。

我可以通过仅返回带有“POST”请求的 JSON 来安全地缓解 THIS 漏洞吗?

不(这不是单个漏洞,而是一组漏洞类别)。

【讨论】:

  • 链接是在讨论window.Array hack
  • @Raynos,您所说的window.Array hack 是 CSRF 攻击。这只是博客文章中链接的众多文章中的一篇。
【解决方案2】:

您可以检查是否有获取以及获取是否来自正确推荐人。

从 POST 中获取它并不会更安全,因为它很容易模拟。

一般而言,您可以采取很多措施来防止跨站点伪造和操纵。

【讨论】:

  • 如何验证correct 推荐人?不会限制从访问恶意站点的用户保存从该站点获取数据的“帖子”保存吗?我知道一个人可以发布帖子,但用户所在的网站可以在用户不知情的情况下这样做吗?
【解决方案3】:

真正的漏洞是能够覆盖Array

如果一个人覆盖了原生数组,那么就可以访问构造为一个数组的 JSON 数据。

所有主流浏览器均已修复此漏洞。

只有当您的客户使用不安全的浏览器时,您才应该担心这一点。

示例:

window.Array = function() {
  console.log(arguments);
  // send to secret server
}

...

$.get(url, function(data) { ... });

在构造 data 时,如果返回的 JSON 中有任何数组,浏览器将调用 window.Array,然后该数组中的数据被发送到秘密服务器。

【讨论】:

  • 如何覆盖Array呢?
猜你喜欢
  • 2011-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 2022-07-16
  • 2014-06-10
相关资源
最近更新 更多