本文由掌控安全学院 - 帆先生 投稿
0x01:原理
1、 什么是CORS
全称跨域资源共享,用来绕过SOP(同源策略)来实现跨域访问的一种技术。
CORS漏洞利用CORS技术窃取用户敏感信息
2、 同源策略简介
同源策略是浏览器最核心也是最基本的安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方的dom、cookie、session、ajax等操作的权限资源。
同源有三个条件:协议、域名、端口相同
3、 同源检测的示例
检测成功的之后同协议、同域名、同端口
4、 漏洞产生原因
由于配置不当,Origin源未严格,从而造成跨域问题。Origin用于检测来自哪个域
5、 两种跨域的方式
JSONP跨域请求
只能通过浏览器发送GET包,是一种利用HTML中<script></script>元素标签,远程调用json文件来实现数据传递技术,它的特点是可以跨域读取数据。
CORS跨域请求
Cors允许浏览器向跨域服务器发出XmlHttpRequest请求,COSRS和JSONP的区别:CORS是JSONP的升级版,JSONP只能通过get方式请求,CORS支持get,post,head请求
6、 CORS的两种请求方式
简单请求
浏览器直接发出CORS请求,即浏览器自动在请求的header中加上Origin字段,告诉浏览器这个请求来自哪个源。服务器端收到请求后,会对比这个字段,如果这个源在服务器端的许可范围内,服务器的响应头会加上以下字段
·Access-Control-Allow-Origin:(这里的值为Origin的值)
·Access-Control-Allow-Credentials:true
非简单请求
预检请求,请求方式为OPTIONS,这个请求是来询问的,请求头要包含以下字段
·Origin:请求源
·Access-Control-Request-Method:cors请求会用到的请求方式
·Access-Control-Request-Head