【问题标题】:Is json hijacking relevant in IE>10 or chrome >30?json 劫持是否与 IE>10 或 chrome>30 相关?
【发布时间】:2015-05-26 11:47:35
【问题描述】:

OWASP 建议使用对象包装 json 响应而不返回直接数组,例如:

[{"id":5}]

这真的还是个问题吗?这可以被黑客入侵吗?
尝试使用ChromeIEFF 我无法“破解”它或利用它。

示例代码:

<html>
    <head>
        <script type="text/javascript"> 
        Object.defineProperty(window,'id',{set: function(obj) {alert(obj);});
        </script> 
    </head>
    <body> 
        <script defer="defer" src="http://example.com/Home/AdminBalances"></script> 
    </body> 
</html>

无论我如何调用它,我都无法调用defineProperty 中的代码,除非我直接在窗口本身上设置一个 id 对象。

如果还可以,能否提供示例代码?

【问题讨论】:

  • 您需要一个易受攻击的浏览器(例如 Firefox 3.0.11)。当这很重要是一个见仁见智的问题。 haacked.com/archive/2009/06/25/json-hijacking.aspx
  • 谢谢,所以我在旧浏览器(非常旧......)中看到这可能是一个问题,但它是在过去 2 年的浏览器中吗?
  • 需要更多帮助吗?如果是这样,我会更新我的答案。
  • 谢谢,只是我想知道这是否是过去 2 年浏览器的任何问题,还是已经解决。

标签: javascript arrays json security


【解决方案1】:

要实现这一点,您应该查看very old browsers。例如,Firefox 3。

现代浏览器似乎不易受到这种攻击。 See here for some methods of defence - 他们是否值得是一个见仁见智的问题。目前,不,它们不值得。但是,如果一个新的、易受攻击的浏览器变得流行起来,那就太好了——你的防御本可以保护用户及其数据免于被盗——但仅仅因为过去存在漏洞,并不意味着将来会再次出现。将来也可能存在不同的未知漏洞。

大多数现代浏览器会自动更新,因此如果存在缺陷,通常会很快修补。防御确实需要很少的努力,因此最终由开发人员决定成本是否涵盖潜在的风险敞口。

【讨论】:

  • 感谢您提供详细信息,这正是问题所在 - 是否值得努力防御不存在的漏洞?
  • @Tal:如果您不希望用户在您的系统上使用旧浏览器,则可能不会。但是,在需要高度安全性的系统(例如银行网站)上,这可能是有益的,因为暴露成本非常高,实施这种控制的成本非常低。
猜你喜欢
  • 2021-09-05
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
  • 2017-03-12
  • 1970-01-01
  • 2017-07-10
  • 2012-12-27
相关资源
最近更新 更多