攻击者伪造一个链接设法让已经登录的用户访问,以此来以用户的身份执行某些非法操作。
CSRF(crossing-site request forgery)攻击有两个重点
- 目标用户已经登录了网站,能够执行网站的功能
- 目标用户访问了攻击者伪造的URL
因为这个url是伪造的,所以叫做跨站点请求伪造
CSRF实验
在bp中使用generate CSRF Poc
https://blog.csdn.net/qq_39328436/article/details/114335137
CSRF与XSS的区别
CSRF并没有盗用用户权限,只是诱导用户点击某个链接达到非法目的
XSS盗取了用户权限
CSRF检测
以上几种情况都可能,导致CSRF攻击变得简单
- 没有验证码
- 修改密码时,不需要验证旧的密码
- 修改敏感信息时,不需要验证token
CSRF预防
CSRF之所以能攻击成功,本质原因是因为攻击者成功预测出url的所有参数值和参数值,成功伪造请求。
1.验证码
验证码是对抗CSRF最简单最有效的方式。CSRF的攻击过程往往是在用户不知情的情况下伪造了网络请求,而验证码则强迫用户和浏览器互动。但是出于用户体验,并不能每个交互的地方都要求输入验证码,所以验证码只是CSRF的辅助手段
2.Referer
http的请求头中包含referer字段,他表示http请求的来源,比如Referer=http://www.google.com。
常见的互联网应用中,页面与页面之间是有逻辑关系的,因此会来自同一个源,如果referer不是一自己的网站开头的域名,这说明可能是CSRF攻击
3.token
为了不让攻击者伪造出url,可以再http请求中以参数的形式加入一个随机产生的token
http://host/path/delete?username=abs&token=[random(seed)];