【问题标题】:Given that you could make cURL requests, what does the same-origin policy actually protect against?鉴于您可以发出 cURL 请求,同源策略实际上可以防止什么?
【发布时间】:2015-05-18 18:34:36
【问题描述】:

我想我明白same-origin policy 是什么。它表示脚本和 AJAX 请求必须来自同一来源,这意味着它们必须具有相同的协议、主机、域和端口。

我不明白它实际保护的是什么。例如,假设我们有两个站点:attacker.com 和 bank.com。我知道attacker.com 不能有脚本或AJAX 请求访问bank.com。但是……

  1. 您可以使用 cURL 向 bank.com 发出任何请求。

  2. 您可以使用浏览器向 bank.com 发出任何类型的 GET 请求

鉴于这些情况,同源策略真正保护的是什么?

【问题讨论】:

标签: ajax security http curl same-origin-policy


【解决方案1】:

当您使用 cURL 或您的浏览器向 bank.com 发出您自己的请求时,不存在安全问题。在这些场景中没有攻击者,只有您和银行。

当您访问attacker.com 时,问题就出现了,它在您不知情的情况下使用您的 浏览器向bank.com 发出请求,该浏览器可能已被记录进入bank.com。

同源策略阻止attacker.com 的所有者使用您的浏览器向bank.com 发出请求。

【讨论】:

  • > 当您使用 cURL 或浏览器向 bank.com 发出自己的请求时,没有安全问题。那是因为 bank.com 可能需要身份验证吗?
  • attacker.com 不需要访问某种 session_id,大概存储了你的 bank.com cookie 吗? IE。如果没有同源策略,如果没有 session_id,它仍然无法获取您的信息。
  • @AdamZerner 是的,如果您提出自己的请求,那么不会涉及攻击者,只有您和银行。
  • @AdamZerner Cookies 存储在浏览器中,并自动将所有请求发送到它们有效的域。所以想法是attacker.com 不需要知道您的 session_id,因为它已经存储在您的浏览器中,并且他们正在使用您的浏览器发出请求。这就是 CSRF 攻击同样有效的原因。
  • @AdamZerner Supposer attack.com 有一些代码请求 bank.com,检查用户是否已登录,如果用户已登录,它会导航到转帐页面并启动一个将所有用户的钱转移到攻击者的帐户。如果没有同源策略,攻击者可以做所有这些事情,因为它可以使用用户的浏览器向 bank.com 发出所有这些请求,该浏览器具有用户对 bank.com 的会话 cookie
猜你喜欢
  • 2016-01-20
  • 2021-07-06
  • 2021-02-22
  • 1970-01-01
  • 2017-11-18
  • 2020-05-27
  • 1970-01-01
  • 2012-12-25
  • 2010-10-03
相关资源
最近更新 更多