CSRF漏洞
CSRF漏洞
原创 EBCloud EBCloud 2024-12-04 08:00
一、什么是CSRF漏洞
CSRF漏洞允许攻击者在用户不知情的情况下,利用用户在已登录状态下的身份验证信息(如cookie、会话等),向服务器发送恶意请求,从而执行未经用户授权的操作。这些操作可能包括更改密码、删除账户、进行金融交易等,可能导致用户的信息泄露、财产损失或其他不可挽回的后果。
图片来源于百度
二、CSRF漏洞工作原理举例
1、用户登录受信任的A网站,并在浏览器中保持登录状态。此时,用户的身份验证信息(如cookie)会保存在浏览器中。
2、攻击者构建恶意网站B,并在其中嵌入指向A网站的恶意请求。
3、用户访问恶意网站B,或在不知情的情况下点击恶意链接。
4、用户的浏览器在访问恶意网站B时,会携带之前登录A网站时保存的cookie等身份验证信息。
5、恶意网站B利用这些身份验证信息,以用户的身份向A网站发送恶意请求。
6、A网站收到请求后,由于请求中包含了有效的身份验证信息,因此会认为是用户本人发起的请求,并执行相应的操作。
图片来源于百度
三、CSRF漏洞的危害
1、未经授权的数据修改和篡改,如更改用户个人信息、发布恶意内容等。
2、财产操作,如转账、购买商品等,导致用户财产损失。
3、破坏用户数据的一致性,误导用户,降低网站的可信度。、
总而言之,就是攻击者偷取了合法身份,以合法身份发送了恶意请求,在服务器的视角来说该请求是合法请求,但是确达成了攻击者所希望的操作。
四、CSRF漏洞的判断方法
1
检查请求参数
GET类型CSRF的检测:首先尝试去掉请求中的token等验证参数,如果请求仍然成功,那么可能存在CSRF漏洞。接着,尝试去掉referer参数的内容,如果仍然可以成功请求,那么漏洞存在的可能性更大。如果post方式对referer验证特别严格,可以尝试将post请求改写为get请求,看是否能绕过验证。
POST类型CSRF的检测:对于需要POST提交的请求,可以尝试构造一个自动提交的表单,并诱导用户点击。如果表单提交成功,那么可能存在CSRF漏洞。
2
验证Referer字段
抓取一个正常请求的数据包,去掉Referer字段后再重新提交。如果该提交仍然有效,那么可以基本确定存在CSRF漏洞。
3
确认凭证的有效期
如果用户的身份验证凭证(如cookie、会话等)在退出或关闭浏览器后仍然有效,或者session没有及时过期,那么可能会导致CSRF攻击。
五、CSRF漏洞的防护
1
实施CSRF Token机制
为每个用户会话生成唯一的CSRF Token,并在每个敏感请求中验证该Token的有效性,将CSRF Token存储在服务器端,确保每次会话开始时更新,并在会话结束时过期。
2
强化请求来源验证
虽然Referer字段可以被伪造,但可以作为辅助手段,检查请求是否来自受信任的源,同时可以利用浏览器的SameSite Cookie属性,限制Cookie在跨站请求中的使用,增强安全性。
3
采用额外安全层
在关键操作(如转账、密码修改)时,要求用户输入验证码,增加攻击难度、避免使用GET请求进行敏感操作,使用POST或其他更安全的HTTP方法、提升用户对CSRF攻击等网络安全问题的认识,教育用户不要随便点击不明链接。
-END-
文章作者
郭民晟