跨站请求伪造(Cross-Site Request Forgery,CSRF)是一种使已登录用户在不知情的情况下执行非本意的操作的攻击方法。因为攻击者看不到伪造请求的响应结果,所以CSRF攻击主要用来执行动作,而非窃取用户数据。当受害者是一个普通用户时,CSRF可以实现在其不知情的情况下转移用户资金、发送邮件等操作;但是如果受害者是一个具有管理员权限的用户时CSRF则可能威胁到整个Web系统的安全
检测方法:
1)使用burp修改或删除请求头中Referer值,检查请求是否正常响应,若响应正常则存在此漏洞。2)使用burp repeater中自动构造CSRF POC功能(右键->Engagement tools->Generate CSRF poc),生成对应请求的POC进行验证。
解决方法:
1.在http请求中以参数形式添加一个随机生成的token,并在服务端进行验证,如果请求中没有token或token内容不正确,则认为该请求可能是CSRF攻击从而拒绝该请求。
2.对请求头Referer值进行合法性检查,如果Referer值为其他域名或空白,则可能是CSRF攻击,从而拒绝该请求。
3.增加验证码功能,可有效遏制CSRF攻击,但是用户体验性不好