CSRF攻击,全称为跨站请求伪造(Cross-Site Request Forgery),是一种网络攻击方式,它利用了用户在目标网站上的已认证状态,通过诱导用户访问恶意网页或点击恶意链接,从而在用户不知情的情况下执行恶意操作。
CSRF攻击原理
- 攻击者诱导用户进入一个第三方网站(Web B),该网站向被攻击网站(Web A)发送跨站请求。
- 如果用户在被攻击网站(Web A)中保存了登录状态,攻击者就可以利用这个登录状态,绕过后台的用户验证,冒充用户向服务器执行一些操作。
- CSRF攻击的本质是利用了cookie会在同源请求中携带发送给服务器的特点,以此来实现用户的冒充。
常见的CSRF攻击类型
-
GET类型的CSRF攻击:
- 攻击者在网站中的一个img标签里构建一个请求,当用户打开这个网站的时候就会自动发起提交。
-
POST类型的CSRF攻击:
- 攻击者构建一个表单,然后隐藏它,当用户进入页面时,自动提交这个表单。
-
链接类型的CSRF攻击:
- 攻击者在a标签的href属性里构建一个请求,然后诱导用户去点击。
常见的CSRF攻击应用场景
-
用户在未注销的情况下,访问第三方网站:
- 攻击者可以在第三方网站上设置一个恶意链接或按钮,当用户点击时,就会向目标网站发送一个伪造请求。
-
用户在浏览器中打开恶意网页:
- 攻击者可以通过诱导用户在浏览器中打开恶意网页,向目标网站发送伪造请求。
-
邮件中的恶意链接:
- 攻击者可以在邮件中设置恶意链接,当用户点击时,就会向目标网站发送伪造请求。
-
XSS攻击配合CSRF攻击:
- 攻击者通过在目标网站中注入恶意代码(XSS攻击),来执行恶意操作,包括触发CSRF攻击。
防范CSRF攻击的方法
- 在关键操作中使用CSRF Token,防止伪造请求的攻击方式。
- 检查Referer头信息,防止跨站请求伪造攻击。
- 对关键操作采取二次确认,如需要用户输入密码等。
- 在Cookie中设置SameSite属性,限制Cookie的发送范围。
- 对用户输入进行过滤和校验,不信任任何用户输入。
CSRF攻击是一种严重的安全威胁,网站开发者需要采取适当的措施来防范这种攻击。