鉴于您可以发出 cURL 请求,同源策略实际上可以防止什么?

Ada*_*ner 4 security ajax curl http same-origin-policy

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

我不明白的是它实际上能防止什么。例如,假设我们有两个网站:attacker.com 和bank.com。我了解到attacker.com 无法通过脚本或AJAX 请求访问bank.com。但...

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

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

考虑到这些因素,同源策略真正能防止什么?

Pau*_*aul 5

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

当您访问attacker.com时,该问题就会出现,并且它在您不知情的情况下使用您的浏览器向bank.com发出请求,而您的浏览器可能已登录bank.com。

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

  • @AdamZerner Cookie 存储在浏览器中,并针对对其有效的域的所有请求自动发送。因此,“attacker.com”不需要知道您的 session_id,因为它已经存储在您的浏览器中,并且他们正在使用您的浏览器发出请求。这就是 CSRF 攻击同样有效的原因。 (2认同)
  • @AdamZerner假设攻击者.com有一些代码请求bank.com,检查用户是否登录,如果用户登录,它会导航到转账页面并启动将所有用户的钱转移到攻击者帐户。如果没有同源策略,攻击者就可以做所有这些事情,因为它可以使用用户的浏览器向bank.com发出所有这些请求,该浏览器具有bank.com的用户会话cookie (2认同)