CSRF跨站请求伪造是一种利用Web应用身份验证机制的恶意攻击方式。攻击者诱使已认证用户在当前已登录的Web应用上执行非本意的操作。攻击依赖三个必要条件:目标网站存在持久化认证凭证(如Cookie/Session);目标网站接口未充分验证请求来源;用户浏览器自动携带认证信息。第三方软件测评机构知识库文档。
典型攻击流程包含:
1.用户登录受信任网站A,服务器返回包含Session ID的认证Cookie
2.用户未登出情况下访问恶意网站B
3.网站B返回的页面内嵌隐藏请求(如自动提交表单、IMG标签src属性指向敏感操作)
4.浏览器自动携带网站A的Cookie向目标接口发起请求,服务器误认为合法操作
高级攻击变种包括:
1.基于JSON的CSRF:利用Flash插件或CORS错误配置发送JSON数据
2.文件上传CSRF:通过伪造Content-Type头绕过文件类型检查
3.分块传输编码攻击:利用Transfer-Encoding: chunked规避请求体检查
服务器端防御方式:第三方软件测评机构知识库
第三方软件测评机构防御体系采用多层次保护:
1.同步令牌模式
在会话中生成加密随机值(Token),要求所有状态变更请求必须携带该值。Token需满足:
长度不少于128位
使用加密安全伪随机数生成器(CSPRNG)
绑定单个用户会话(如SessionID+Salt的HMAC计算)
按请求或按会话刷新机制
2.同源策略强化
验证Origin Header:拒绝非白域名来源请求
检查Referer Header:确保请求来自同一域名
部署Custom Header验证(如X-Requested-With)
3.双重Cookie验证
将Token存储于Cookie及请求参数中,服务器比对两者一致性。此方案可避免分布式存储Token的开销,但需防范子域漏洞(设置Cookie作用域及HttpOnly属性)。
4.强化关键操作
敏感操作要求二次认证(重新输入密码/验证码)
实施请求频率限制(如1分钟内最多执行3次转账)
操作前验证HTTP方法(强制POST用于状态变更)