CSRF
跨网站请求伪造
相关错误
“此服务器易受跨网站请求伪造攻击。在每个请求中追加 CSRF 令牌或 SameSite cookie 属性。”
问题
跨网站请求伪造 (CSRF) 是指诱使用户无意中向未经过身份验证的 web 应用发送请求。CSRF 攻击利用 Web 应用在经过身份验证的用户中的信任。
CSRF 攻击通常具有明确目标,利用社会工程手段,例如:
网络钓鱼电子邮件
聊天链接
虚假警告
当用户登录到 Web 应用时,攻击者会提醒用户单击一个 URL,其中含有未经授权的特定 Web 应用请求。随后,用户浏览器会将此恶意请求发送到目标 Web 应用,包括会话信息,例如会话 cookie 或存储的凭证。如果用户与目标 web 应用正在进行活跃的会话,该应用会将此新请求作为授权用户发起的请求进行处理。导致攻击者可以利用 Web 应用的 CSRF 漏洞。
攻击级别取决于受攻击者拥有的权限级别。CSRF 攻击不直接窃取用户的身份信息,而是通过用户无意中执行操作进行攻击。
CSRF 攻击一旦成功,会迫使用户执行改变状态的请求,例如:
更改密码
更改电子邮件地址
修改或删除记录
转账
购买
解决方案
防止 CSRF 攻击的方法:
对所有改变状态的请求使用 CSRF 令牌
CSRF 令牌也叫同步器令牌或挑战令牌,是客户端为每次用户会话生成的唯一密钥值,使攻击者无法攻击和欺骗用户。
为会话 cookie 使用 SameSite cookie 属性
在 cookie 上设置 SameSite 属性,以作为 CSRF 令牌之外的额外保护层。SameSite 属性可确保只有当 cookie 和请求来源于同一个域(而非跨域)时,才允许发送 cookie。
注意
较早版本的浏览器可能不支持 SameSite cookie。