XHR2允许原点 - 这可以伪造吗?

时间:2012-12-21 07:58:42

标签: ajax security xmlhttprequest cross-domain cors

关于通过XHR2 / CORS访问的资源可以阻止请求的方式,除非它来自列入白名单的域:

  • 读取哪个标头以确定引荐来源域 - 它是标准的HTTP_REFERRER吗?
  • 有人会以某种方式发送假装来自其他域名的请求吗?

我知道CORS不是确保数据安全的可靠方法 - 我只是作为好奇心来问。

2 个答案:

答案 0 :(得分:0)

读取的标头为Origin。任何HTTP标头都可以伪造。 COSR背后的想法是启用发送数据,同时仍然保护用户/防止滥用用户会话。禁止跨域请求保护用户,而不是服务器。

攻击者应该发送假设这是另一个域的请求并发送用户拥有的cookie。这不是你可以通过XSS单独实现的 - 你必须偷取cookie并自己发送请求。但是你不能从站点B窃取站点A的cookie。但是如果A接受来自任何域的请求,通过B上的XSS你可以欺骗用户的浏览器向A发送请求,浏览器将发送cookie并且你可以读取响应回来。

答案 1 :(得分:0)

Origin标头包含请求域。

此浏览器完全控制此标题,并且不能伪造。浏览器代表用户控制此标头,用户不能覆盖JS代码中的值。

注意我说的是“浏览器”;与任何HTTP请求一样,用户可以使用任何Origin标头创建卷曲请求。但这仅限于用作攻击媒介,因为黑客必须欺骗有效用户发出正确的卷曲请求,这是不可能的。