一.漏洞场景
在特殊场景下,客户端向服务器发起更改状态的请求,容易产生CSRF 漏洞。
常见场景:
●银行转账
●修改密码
二.漏洞描述
跨站请求伪造(Cross Site Request Forgery,CSRF)是一种攻击,它强制浏览器客户端用户在当前对其进行身份验证后的Web 应用程序上执行非本意操作的攻击,攻击的重点在于更改状态的请求,而不是盗取数据,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。因为攻击者无法查看伪造请求的响应。
三.漏洞原理
攻击者可以伪造当前已经登录用户的身份访问正常的网站,执行非本意的操作。正常的网站,没有对来源请求进行严格的验证和过滤,导致攻击者可以伪造正常用户的请求,达到攻击目的。
四.漏洞危害
攻击者借用正常用户的身份,发起更改状态的请求,如:
●银行转账
●修改用户密码
●修改邮箱
●群发消息
●与XSS 漏洞相结合创建网站后台管理员账号
●…
五.漏洞等级
高危
六.漏洞防御
●CSRF 令牌- CSRF 令牌是由服务器端应用程序生成并与客户端共享的唯一、秘密且不可预测的值。当尝试执行敏感操作(例如提交表单)时,客户端必须在请求中包含正确的 CSRF 令牌。这使得攻击者很难代表受害者构造有效请求。
●SameSite cookie - SameSite 是一种浏览器安全机制,用于确定网站的 cookie 何时包含在来自其他网站的请求中。由于执行敏感操作的请求通常需要经过身份验证的会话 cookie,因此适当的 SameSite 限制可能会阻止攻击者跨站点触发这些操作。自 2021 年起,ChromeLax默认强制执行 SameSite 限制。由于这是提议的标准,我们希望其他主要浏览器将来也能采用这种行为。
●基于 Referer 的验证——一些应用程序使用 HTTP Referer 标头来尝试抵御 CSRF 攻击,通常是通过验证请求是否来自应用程序自己的域。这通常不如 CSRF 令牌验证有效。