XHR2 允许来源 - 这可以伪造吗?
Posted
技术标签:
【中文标题】XHR2 允许来源 - 这可以伪造吗?【英文标题】:XHR2 allow origin - can this be faked? 【发布时间】:2012-12-08 19:25:21 【问题描述】:关于通过 XHR2/CORS 访问的资源可以阻止请求的方式,除非它来自白名单域:
读取哪个标头以确定引荐来源域 - 是标准 HTTP_REFERRER 吗? 有人能以某种方式假装来自另一个域的请求吗?我知道 CORS 不是保护数据的可靠方法 - 我只是出于好奇而问。
【问题讨论】:
【参考方案1】:读取的标头是Origin
。与任何 HTTP 标头一样,它可以被伪造。 COSR 背后的想法是启用发送数据,同时仍然保护用户/防止滥用用户会话。禁止跨域请求是为了保护用户,而不是服务器。
攻击者应该假装这是另一个域发送请求并发送用户拥有的 cookie。这不是您可以通过XSS
单独实现的 - 您必须窃取 cookie 并自行发送请求。但是您不能从站点 B 窃取站点 A 的 cookie。但是,如果 A 接受来自任何域的请求,通过 B 上的 XSS,您可以欺骗用户的浏览器向 A 发送请求,浏览器将发送 cookie,您可以读取响应返回。
【讨论】:
【参考方案2】:Origin
标头包含请求域。
此浏览器完全控制此标头,不能伪造。浏览器代表用户控制这个header,用户不能覆盖JS代码中的值。
注意我说的是“浏览器”;与任何 HTTP 请求一样,用户可以使用任何 Origin
标头制作 curl 请求。但这作为攻击媒介的用途有限,因为黑客必须欺骗有效用户发出正确的 curl 请求,而这不太可能。
【讨论】:
以上是关于XHR2 允许来源 - 这可以伪造吗?的主要内容,如果未能解决你的问题,请参考以下文章