好的,所以我正在开发一个开始变得更加混乱的网络应用程序。然后我读了一篇谈论javascript hijacking的博客,我对它何时出现问题感到有些困惑。我想要一些澄清
问题1: 这是问题/漏洞吗?
如果我的网站返回带有敏感的'GET'请求的json数据 信息然后信息可能落入坏人之手。
我使用ASP.NET MVC,返回JSON的方法要求您明确允许json获取请求。我猜他们正试图挽救那些不熟悉这个安全漏洞的人。
问题2: 劫持是否通过嗅探/阅读响应而发生,因为它是通过互联网发送的? SSL是否可以缓解这种攻击?
问题3: 这导致我向自己提出这个问题。如果我将页面状态存储在页面的本地javascript对象中,有人可以劫持该数据(除了登录用户)吗?
问题4: 我是否可以通过仅返回带有“POST”请求的JSON来安全地缓解此漏洞?
答案 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
,然后该数组中的数据将被发送到秘密服务器。