使用带有敏感信息的JSON-P

时间:2012-05-17 13:58:06

标签: ajax json security rest jsonp

我有一个安全的网站,要求用户进行身份验证,并希望通过JSON-P从我的API将敏感数据返回给客户端,以便我可以解决ajax跨域问题。我拥有客户端和服务器,所以我不关心客户端的安全性(即从服务器读取恶意js)。

我一直在研究保护JSON-P以防止跨站点请求伪造的方法,但是无法清楚地确定检查Referer是否是保护数据的万无一失的方法。据我了解,在这种情况下,Referer标头不能被欺骗,因为调用将来自javascript,并且Headers无法更改。这是正确的假设吗?

我想了解一些明确的例子,说明为什么或为什么不检查Referer会/将无法保证JSON-P。

谢谢!

编辑:

只是为了澄清 - JSON-P是通过Spring Security保护的,所以它不仅可以通过Referer头保护。我最关心的是会话劫持......

2 个答案:

答案 0 :(得分:1)

可以使用普通卷曲代码调用Jsonp网址。 Http引用很容易被伪造。

答案 1 :(得分:1)

  

我想了解一些明确的例子,说明为什么或为什么不检查Referer会/将无法保证JSON-P。

Referer无法保证发送,因此:

  • 如果您要求它出现并与受信任的站点匹配,那么对于浏览器或网络设置未发送的所有人,您将破坏应用程序;

  • 如果您允许它不在场,那么您不仅要为这些用户进行攻击,而且还要攻击每个攻击者可以诱导Referer不被发送的人(最值得注意的是,来自HTTPS页面;

  • 另外,要使用代理正常运行,您必须no-cache所有回复(或Vary: Referer,但这在IE中无效)

推荐人检查是一种微弱且有问题的方法,有时会将其视为绝望的最后一种措施......当你做出选择时,这不是你应该建立的。如果您控制两台服务器,您可以轻松地在一个页面上包含一个请求令牌,该令牌可以被任何一个脚本识别。