CSRF攻击
CSRF(Cross-Site Request Forgery)攻击是一种利用用户已登录的身份,欺骗用户在未经其同意的情况下对某个站点发起请求的攻击方式。攻击者利用用户在其他站点中的登录状态,通过伪造请求,使用户在不知情的情况下执行了恶意操作。
攻击过程:
- 用户在浏览器中登录了一个受信任的网站A,并且保持了登录状态,使得浏览器保存了该站点的身份认证信息(比如Cookie)。
- 用户在同一浏览器中访问了一个恶意网站B,该网站中包含了针对网站A的CSRF攻击代码。
- 恶意网站B中的代码会自动向网站A发送伪造的请求,比如修改用户信息、发起转账等操作。
- 浏览器默认会自动发送之前保存的网站A的身份认证信息(比如Cookie)给网站A,而用户在不知情的情况下执行了这些恶意操作。
- 攻击者成功利用了用户在网站A中的身份认证信息,完成了攻击目标。
防御方法:
- 使用CSRF Token:在每个请求中添加一个随机生成的Token参数,并在服务器端进行验证。攻击者无法伪造该Token,因此可以有效地防止CSRF攻击。
- 检查Referer头:浏览器在发送请求时会自动添加Referer头,用于标识该请求是从哪个页面发起的。服务器可以检查Referer头,确定该请求是否来自合法的来源,从而防止CSRF攻击。
- 双重提交cookie:在用户登录时,在Cookie中添加一个随机生成的Token,并在每