Web 安全——CSRF
一、是什么
CSRF (Cross-Site Request Forgery),是一种伪装成受信任用户给网站发送恶意请求的 web 攻击方式。比如下面这个例子
<img src="https://www.example.com/index.php?action=delete&id=123"> |
上述例子由于用户对于 https://www.example.com 已经是受信任的用户,点击图片发送一些恶意请求给服务器是不会再次进行校验的,因此利用这个漏洞,攻击者可以执行一些操作,使自己受益。
CSRF 产生原因:浏览器发起请求会默认带上包括会话 cookie 在内的所有的 cookie,因此,若用户已经受信任于某个网站,该网站是无法去区分请求是伪装用户发出的,还是真实用户发出的。
二、CSRF 攻击的影响
攻击者可以任意操作受信任网页,比如修改用户登录密码,使用用户账户进行购物等
三、防范 CSRF 攻击的方法
- 确认一下使用的框架有自带的 CSRF 防御机制,有的话就直接使用
- cookie 设置 SameSite 属性,不发送跨站请求
- 使用常规的请求头部
- 校验请求头部的 origin 值
- 使用双重认证 cookie,这种方式的实现大概是浏览器发起请求时,除了cookie携带身份之外,请求参数也需要携带身份信息,服务端会校验这两个值是否相等,相等则身份受信任
- 对于涉及敏感信息的交互,可以使用以下方法进行防范
- 重新认证
- 使用一次性 token
- 使用验证码进行校验
- XSS 攻击的防范策略也适用于 CSRF
- 改变状态的请求不使用 get 方法
参考资源:
[Cross-Site Request Forgery Prevention Cheat Sheet]([https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html]
本文标题:Web 安全——CSRF
文章作者:Canace
发布时间:2021-04-22
最后更新:2023-05-26
原始链接:https://canace.site/web%E5%AE%89%E5%85%A8-CSRF/
版权声明:转载请注明出处
分享