Javascript劫持,何时以及我应该担心多少?

时间:2011-07-21 13:47:18

标签: javascript security csrf

好的,所以我正在开发一个开始变得更加混乱的网络应用程序。然后我读了一篇谈论javascript hijacking的博客,我对它何时出现问题感到有些困惑。我想要一些澄清

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

  

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

我使用ASP.NET MVC,返回JSON的方法要求您明确允许json获取请求。我猜他们正试图挽救那些不熟悉这个安全漏洞的人。

问题2: 劫持是否通过嗅探/阅读响应而发生,因为它是通过互联网发送的? SSL是否可以缓解这种攻击?

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

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

3 个答案:

答案 0 :(得分:1)

您链接的帖子是关于CSRF& XSS(参见我对这个问题的评论),所以在这种情况下:

  

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

没有

  

通过嗅探/阅读通过互联网发送的回复是否会发生劫持?

没有

  

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

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

  

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

否(这不是一个漏洞,它是一组漏洞)。

答案 1 :(得分:0)

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

从POST中获取它并不是那么安全,因为这很容易模拟。

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

答案 2 :(得分:0)

实际的漏洞可以覆盖Array

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

此漏洞已在所有主流浏览器中修补。

如果您的客户使用不安全的浏览器,您应该只担心这一点。

示例:

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

...

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

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