目录
1.什么是csrf攻击?
CSRF(Cross-Site Request Forgery)攻击是一种常见的Web安全威胁,也被称为跨站请求伪造攻击或Session Riding。CSRF攻击利用了用户对特定网站的认证凭证(如Cookie或会话)来执行未经授权的操作。
1.1 CSRF攻击的基本原理如下:
- 用户在浏览器中已经登录了一个网站A,并且该网站A将此次会话信息保存在Cookie中。
- 在网站A中,存在一个恶意网站B,该网站包含了一段针对网站A的恶意代码。
- 用户在没有退出网站A的情况下,访问了恶意网站B。
- 恶意代码在用户的浏览器中执行,构造了一个针对网站A的请求,并通过某种方式自动发送给网站A。
- 由于用户在网站A中已经有有效会话,网站A无法区分此请求是用户自发的还是恶意构造的。
- 网站A接收到了来自恶意网站B的请求并进行处理,导致执行了未经用户授权的操作,如修改数据、转账等。
CSRF攻击通常利用了跨站点脚本(XSS)漏洞,也可以通过给图片或链接添加伪装页面的方式进行攻击。攻击者利用用户的浏览器对目标网站自动进行请求,从而完成攻击目的。
1.2 为了防止CSRF攻击,常用的防御措施包括:
- 使用CSRF令牌:在每个敏感操作的请求中,生成一个随机的CSRF令牌,并将其与用户会话关联起来。在提交请求时,验证该令牌的有效性。
- 同源检测:服务器端判断请求来源是否与目标网站同源,如果不同,则拒绝处理该请求。
- 验证HTTP Referer头部:虽然Referer头部可以被伪造,但仍可作为一种简单的验证手段,验证请求来源是否合法。
- 双重确认:对于敏感操作,要求用户进行额外的确认,如输入密码、验证码等。