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

Given that you could make cURL requests, what does the same-origin policy actually protect against?

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

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

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

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

鉴于这些,同源策略真正能防止什么?

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

当您访问 attacker.com 时,问题开始发挥作用,它在您不知情的情况下使用 您的[=18= 向 bank.com 发出请求]浏览器,可能登录bank.com.

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