繁体   English   中英

Javascript 劫持,我应该担心什么时候以及担心多少?

[英]Javascript hijacking, when and how much should I worry?

好的,所以我正在开发一个 web 应用程序,它已经开始变得更加 ajaxified。 然后我阅读了一篇关于javascript 劫持的博客,我对它何时真正成为问题感到有点困惑。 我想澄清一下

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

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

我使用 ASP.NET MVC 和返回 JSON 的方法要求您明确允许 json 获取请求。 我猜他们正试图从这个安全漏洞中拯救没有经验的人。

问题 2:劫持是通过嗅探/读取通过 Internet 发送的响应而发生的吗? SSL 是否缓解了该攻击?

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

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

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

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

不。

劫持是否通过嗅探/读取通过互联网发送的响应而发生?

不。

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

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

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

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

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

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

一般来说,您可以做很多事情来防止跨站点伪造和操纵。

真正的漏洞是能够覆盖Array

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

此漏洞已在所有主要浏览器中修复。

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

例子:

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

...

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM