沫延说
沫延说
关于CSRF攻击与Access-control-allow-origin配置安全性的探讨
关于CSRF攻击与Access-control-allow-origin配置安全性的探讨

定    义

CSRF全称Cross-site request forgery,中文作“跨站请求伪造”

是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

 

攻击流程

用户Client访问并登录可信站点A浏览器获取并记录Cookie,在Cookie未失效时打开含有恶意代码站点B,此时站点B中包含的恶意代码在用户有可能不知情的情况下通过用户身份执行某些操作。

 

跨域配置

Access-control-allow-origin头一般来说仅在需要时进行配置,意在允许指定域名跨域访问或调用本站资源,一般分两种情况:

 

第一种情况

一般应用在开源公共库中:允许任意用户调用公共库中的js、字体等文件

此时Access-control-allow-origin应配置为*,即允许所有域名跨域访问或调用

 

第二种情况

也有站点做动静分离,js、css等文件使用CDN技术实现加速同时降低服务器负载,导致加速域名与原站点不一致,出现跨域访问

此时Access-control-allow-origin应配置为CDN域名

 

安全性分析

根据万维网联盟w3c网站关于Cross-Origin Resource Sharing推荐标准(截止2019年11月20日最新修订本为20140116版)第6.1中所述:

https://oss.topstalk.com/blog/2019/11/w3c-TR-cors-6.1.jpg

其中第3条详细介绍了如果资源涉及凭证,除了增加“Access-control-allow-origin”标头Origin外还需要添加“Access-Control-Allow-Credentials”标头“true”

也可以只设置“Access-control-allow-origin”标头Origin或“*”

同时在注意中使用绿色文本标记了“The string "*" cannot be used for a resource that supports credentials.”,即字符串“*”不能用于涉及凭证的资源

 

也就是说,将“Access-control-allow-origin”标头设置为“*”是否真正存在风险主要看浏览器对w3c推荐标准的落地执行程度

 

 

感谢您阅读关于CSRF攻击与Access-control-allow-origin配置安全性的探讨

及时获取更多文章,欢迎关注“Topstalk”微信订阅号

Thank you for reading the 关于CSRF攻击与Access-control-allow-origin配置安全性的探讨

Get more articles in time,Welcome to follow the "Topstalk" WeChat subscription account

没有标签
首页      信息安全      关于CSRF攻击与Access-control-allow-origin配置安全性的探讨

Morton.L

文章作者

发表评论

textsms
account_circle
email

沫延说

关于CSRF攻击与Access-control-allow-origin配置安全性的探讨
定    义 CSRF全称Cross-site request forgery,中文作“跨站请求伪造” 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的…
扫描二维码继续阅读
2019-11-21