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的关系是这样的:
......
详情:98%人搞反:CORS挡住的从来不是你的Cookie!