【发布时间】:2013-04-23 18:47:47
【问题描述】:
我正在使用 Backbone.js 和 Tornado 网络服务器。在 Backbone 中接收集合数据的标准行为是作为 JSON 数组发送。
另一方面,由于以下漏洞,Tornado 的标准行为是不允许 JSON Array 的:
http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx
相关的是: http://haacked.com/archive/2009/06/25/json-hijacking.aspx
当我的 JSON 确实是一个对象列表时,不必将我的 JSON 包装在一个对象中,这对我来说感觉更自然。
我无法在现代浏览器(即当前的 Chrome、Firefox、Safari 和 IE9)中重现这些攻击。同时,我无法确认现代浏览器在任何地方都解决了这些问题。
为了确保我不会被任何可能糟糕的编程技能或糟糕的谷歌搜索技能误导:
这些 JSON 劫持攻击在现代浏览器中是否仍然是一个问题?
(注意:很抱歉可能重复到:Is it possible to do 'JSON hijacking' on modern browser?,但由于接受的答案似乎没有回答问题 - 我认为是时候再问一次并获得一些更清晰的解释了。)
【问题讨论】:
-
使用评估?那么可能,否则不。如果主干解析响应的方式没有任何改变或改变,那么你应该是安全的
-
一般来说,您永远不应该假设某人将使用“现代”浏览器来处理网络安全问题。
-
@Luke - 请参阅下面对 Reid 的评论。总的来说很重要 - 但我不是在问一般的安全问题。 (我的用户只有首先使用现代浏览器才能进行身份验证。)
-
@Luke,有时我们必须继续前进并允许我们使用现代模式进行开发(例如这种情况下的 REST :获取数据是一种 GET 操作,不应该是其他东西)而不保护旧模式如果它们现在似乎只适用于一小部分受众,则威胁。所以这个问题真的很有价值,可以让人们评估他是否可以在他的应用案例中忽略这个威胁。在某些时候,使用非常过时的软件的用户很可能遇到其他类型的威胁(恶意软件),我们无论如何都无法保护他们。
-
@jpaugh,你在哪里看到这样的假设?我只是在某种程度上假设那些拥有这种过时软件的人无论如何都是“无法保护的”。 (关于证明我的溜冰鞋的成本是合理的,我已经习惯于将其价格的三分之一用于碳纤维速滑鞋,这些碳纤维速滑鞋在我磨损现有溜冰鞋所需的时间不到三分之一的时间内就磨损了。无论如何,我认为它们是值得的,前提是您喜欢骑它们,这是我的情况。)
标签: javascript json security browser tornado