什么是csrf?如何防御csrf?

82 阅读2分钟

csrf是指跨站请求伪造攻击。

举一个常见的例子就是说在浏览器里面打开了银行网站bank.com登录了账户,这个时候浏览器就保存了银行登录的cookie。然后又接着打开了一个恶意网站比如说attack.com,这个网站里面隐藏了一段代码,会悄悄向bank.com发起一个转账请求,因为浏览器已经保存了bank.com的cookie这个时候银行网站就会认为这个转账请求是你本人发起的,从而执行转账。

csrf的本质就是利用cookie会携带发送给服务器的特点,第三方网站窃取,让服务器误以为是合法请求,以此来实现用户的冒充。

常见的csrf的攻击类型有以下几种:

get类型的crsf攻击,比如在一个img标签里面构建一个请求,当用户打开这个网站就会自动发起提交。

post类型的csrf攻击,比如构建一个表单,然后隐藏它,当用户进入这个网站时自动发起提交。

链接类型的csrf攻击,比如在一个a标签里面构建一个请求,然后诱导用户去点击。

如何防御csrf攻击

1.使用csrf token服务器会生成一个随机的token放在表单或者请求头中,提交服务时服务器会验证token是否合法。攻击者无法获取token因为浏览器有同源策略的保护机制。

2.设置cookie的samesite属性为strict或者lax,限制第三方网站发送cookie。在严格模式下,cookie不能作为第三方cookie使用。

3.进行同源检测检查http请求头中的refer字段,确保请求来自自己的网站,从而对请求进行过滤。这种存在的缺点就是某些浏览器会禁用refer字段,而且有可能会被攻击者篡改。