【问题标题】:XHR2 allow origin - can this be faked?XHR2 允许来源 - 这可以伪造吗?
【发布时间】:2012-12-08 19:25:21
【问题描述】:

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

  • 读取哪个标头以确定引荐来源域 - 是标准 HTTP_REFERRER 吗?
  • 有人能以某种方式假装来自另一个域的请求吗?

我知道 CORS 不是保护数据的可靠方法 - 我只是出于好奇而问。

【问题讨论】:

    标签: ajax security xmlhttprequest cross-domain cors


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      Origin 标头包含请求域。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-21
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多