开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第22天,点击查看活动详情
前言
之前讲解过XSS攻击的概念与防范措施,下面我们来了解另外一种攻击——CSRF攻击。
CSRF攻击
CSRF:跨站请求伪造攻击,主要通过诱导用户进入第三方网站,此时该网站会发送请求,冒充用户去执行一些操作,之所以能冒充用户主要是因为用户在网站是登录状态,第三方网站就能绕过登录验证。攻击大致流程图如下:
从图中我们能够清晰看到CSRF攻击整体思路,具体攻击类型有以下几种:
- POST类型,如在页面创建一个隐藏表单,有用户打开页面时提交表单,发送恶意请求等。
- GET类型,如在页面上的一个img标签创建一个get请求,打开页面就发送。
- 链接类型,如超链接等,引诱用户点击触发操作。 上述可知CSRF攻击对比XSS更加简单粗暴,get、post类型触发也不算苛刻,造车的影响也挺恶劣,修改邮件名、转移金额等。
防范
CSRF攻击这么恶劣,防范才是关键,具体的防范措施如下:
- 请求同源检测:利用请求头的origin或referer来判断请求是否来自于被信任的站点,达到对请求过滤的目的。该方法的缺点就是referer可能是伪造的,并且搜索的链接也不会被允许。
- CSRF Token 验证:首先返回一个Tolen值,在下次请求接口时,将Token中当成参数传递过去,服务器进行验证。该方法的缺点是操作繁琐,每个请求都要增加参数,并且如果有多个服务器接口时,Token值不一样,校验起来更加麻烦。
- 设置Samesite,限制cookie的使用,避免被第三方使用,谷歌浏览器都有相关samesit配置。Samesite有两种模式:
严格模式:cookie绝对不允许被第三方使用。
宽松模式:cookie允许发生页面跳转的get请求。 上述每个方法都有优缺点,开发防范中我们可以结合着使用。
总结
以上就是CSRF攻击,这个攻击危害性大,防范起来也很麻烦,我们要选择合适的方法去防范。