98%人搞反:CORS挡住的从来不是你的Cookie!

再接着上一篇文章,继续讲讲CSRF攻击相关的CORS问题。

 

因为CSRF的核心是利用cookie(登录态),而不是为了获取cookie。上一篇文章主要讲的是什么情况下才会带上cookie。

 

而一般讲到是否会带上cookie的前提,大部分都是跨域情况下。

 

也就是跨域的时候,什么情况下才能带上cookie?

 

 

首先,讲到跨域,基本就是CORS(跨源资源共享)了。

 

CORS的核心是Access-Control-Allow-Origin这些请求头。

 

 

那如果没有设置Access-Control-Allow-Origin这些请求头,默认是怎么样的?

 

就是当攻击网站发起目标网站的请求的时候,该请求是否会带上cookie呢?

 

先看看CORS的安全规范吧,是下面这样的。

当请求需要携带凭证(比如cookie)时,必须满足两个方面:

1、Access-Control-Allow-Origin需明确指定域名(不能为 *)

2、Access-Control-Allow-Credentials必须为 true

 

比如下面的配置:

# nginx配置示例
add_header 'Access-Control-Allow-Origin' 'https://target-site.com';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';

 

CORS和cookie的关系是这样的:

image

 

......

 

详情:98%人搞反:CORS挡住的从来不是你的Cookie!

 

 

posted @ 2025-07-25 17:43  simonbaker  阅读(6)  评论(0)    收藏  举报