浅析CORS攻击及其挖洞思路

0x1 CORS机制

  CORS全名跨域资源共享(Cross-Origin-Resourece-sharing),该机制主要是解决浏览器同源策略所带来的不便,使不同域的应用能够无视同源策略,进行信息传递。

引用一张图能很好地说明CORS机制的作用

0x2 CORS机制实现

那么这个机制是怎么发挥作用的呢?

CORS的标准定义是:通过设置http头部字段,让客户端有资格跨域访问资源。通过服务器的验证和授权之后,浏览器有责任支持这些http头部字段并且确保能够正确的施加限制。

为了更好理解这个过程,我们首先了解下相关的http头部字段

请求头 说明
Origin 表面预检请求或实际请求的源站URI, 浏览器请求默认会发送该字段
Access-Control-Request-Method 将实际请求所使用的HTTP方法告知服务器
Access-Control-Request-Headers 将实际请求所携带的首部字段告知服务
响应头 说明
Access-Control-Allow-Origin(ACAO) 指定允许访问资源的外域URI,对于携带身份凭证的请求不可使用通配符*
Access-Control-Allow-Credentials 是否允许浏览器读取response的内容,当用在preflight预检请求的响应中时,指定实际的请求是否可使用credentials

那么这个机制,具体可以总结为下面这个图片

所有的请求实际上都已经发出了,只不过浏览器解析的时候根据返回的http头部字段来选择性拦截了而已。

0x3 如何配置CORS

0x3.1 配置中间件nginx实现CORS跨域

这个点我就从网上经典的例子来找的,其实默认这样设置存在很多问题,0x4的时候我会讲相应的攻击思路

我当时google了一下搜索nginx配置跨域CORS)

经典配置一:

location / {  
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

    if ($request_method = 'OPTIONS') {
        return 204;
    }
}

经典配置二:

location / {  
        add_header Access-Control-Allow-Origin $http_origin;
        add_header Access-Control-Allow-M
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值