CSRF和CORS 漏洞区别整理
今天在浏览“嘶吼”的时候看到了一篇讲CORS的文章。脑子里忽然对CORS和CSRF的区别有了一点疑问。于是就想写下来。
1. 基本概念复习
CSRF,跨站请求伪造。攻击者在受害者未知的情况下可以使用受害者的认证发送伪造请求给目标站点。
CORS, 跨源资源共享。这是XMLHttpRequest V2 标准下规定的跨站点资源共享的方式。它规定了浏览器在通过XMLHttpRequest请求跨域资源请求的时候的行为规范。服务端请求头配置错误的时候会导致安全漏洞。
从字面上看,CSRF 是一种攻击方式。而CORS是一种资源共享的方式。
2. 漏洞区别
CSRF漏洞出现的场景比较多。常见的CSRF漏洞往往是针对某个行为的攻击,攻击者不需要得到服务端返回的内容。浏览器只要携带受害者的cookie发起了一个动作,服务端进行正常的接受请求就能够达到攻击者的目的。CSRF造成的危害根据具体的业务场景判定。
CORS是XMLHTTPRequest的规范。它规定了XMLHttprequest请求获取跨域资源的行为。这里有2点要求,浏览器发出的必须要是XMLHttpRequest 。它的场景被限制了。(可能在CORS规范出现前,CSRF是可以利用ajax进行攻击的吧🤔。)安全攻防中,我们正常是需要得到服务端的返回的,CORS漏洞经常造成的是敏感信息泄露的问题。
3. 防范
csrf 现今主流框架基本有完善的方案进行防护。基本上是对表单操作增加伪随机数token。后端进行随机数token校验。
cors出现漏洞的情况往往是对Access-Control-Allow-Origin、Access-Control-Allow-Credentials 设置和校验存在问题。需要对这两个参数进行设置。

浙公网安备 33010602011771号