1

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

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

我想要一些明确的例子,说明为什么或为什么不检查Referer 会/不会保护JSON-P。

谢谢!

编辑:

澄清一下——JSON-P 是通过 Spring Security 保护的,因此它不仅受 Referer 标头的保护。我在这里最关心的是会话劫持......

4

2 回答 2

1

可以使用普通 curl 代码调用 Jsonp url。Http 引用很容易被伪造。

于 2012-05-17T14:06:54.430 回答
1

我想要一些明确的例子,说明为什么或为什么不检查Referer 会/不会保护JSON-P。

Referer不保证发送,所以:

  • 如果您要求它存在并匹配受信任的站点,您将破坏浏览器或网络设置未发送它的每个人的应用程序;

  • 如果你允许它不存在来绕过它,你就会打开自己的攻击,不仅针对那些用户,而且针对攻击者可以诱导不发送Referer的每个人(最值得注意的是,来自HTTPS页面;

  • 此外,要正确处理代理,您必须对no-cache所有响应(或者Vary: Referer,但这在 IE 中无法正常工作)

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

于 2012-05-17T23:09:57.960 回答