我有一个安全的网站,要求用户进行身份验证,并希望通过JSON-P从我的API将敏感数据返回给客户端,以便我可以解决ajax跨域问题。我拥有客户端和服务器,所以我不关心客户端的安全性(即从服务器读取恶意js)。
我一直在研究保护JSON-P以防止跨站点请求伪造的方法,但是无法清楚地确定检查Referer是否是保护数据的万无一失的方法。据我了解,在这种情况下,Referer标头不能被欺骗,因为调用将来自javascript,并且Headers无法更改。这是正确的假设吗?
我想了解一些明确的例子,说明为什么或为什么不检查Referer会/将无法保证JSON-P。
谢谢!
编辑:
只是为了澄清 - JSON-P是通过Spring Security保护的,所以它不仅可以通过Referer头保护。我最关心的是会话劫持......
答案 0 :(得分:1)
可以使用普通卷曲代码调用Jsonp网址。 Http引用很容易被伪造。
答案 1 :(得分:1)
我想了解一些明确的例子,说明为什么或为什么不检查Referer会/将无法保证JSON-P。
Referer
无法保证发送,因此:
如果您要求它出现并与受信任的站点匹配,那么对于浏览器或网络设置未发送的所有人,您将破坏应用程序;
如果您允许它不在场,那么您不仅要为这些用户进行攻击,而且还要攻击每个攻击者可以诱导Referer不被发送的人(最值得注意的是,来自HTTPS页面;
另外,要使用代理正常运行,您必须no-cache
所有回复(或Vary: Referer
,但这在IE中无效)
推荐人检查是一种微弱且有问题的方法,有时会将其视为绝望的最后一种措施......当你做出选择时,这不是你应该建立的。如果您控制两台服务器,您可以轻松地在一个页面上包含一个请求令牌,该令牌可以被任何一个脚本识别。