CSRF概念
Cross-Site request forgrey简称CSRF,在CSRF攻击场景中攻击者会伪造一个请求,这个请求一般是链接,用户点击以后整个攻击也就完成了,故CSRF也被称为one click攻击。本质是攻击者盗用了目标用户的身份,以这个身份发送请求。
CSRF原理
举例:
用户C登录A网站进行购物,攻击者B想把用户A购物的收货地址改为自己的地址,那么攻击者B则需要1.用户C的登录权限 2.向服务器发送更改地址的请求。
攻击者B先自己注册了账号然后更改地址,抓取更改地址的包,记录下更改地址请求的url。然后修改url中参数制造出用户名是C与地址是自己地址的请求url。再把url发送给C。
假如C正在登录A网站又点击了虚假url,此时发出的请求就会带上C的cookie,同时满足了上述的两个条件,C的地址就更改成了B的地址。
pikachu实例
用户登录后抓包得到更改地址的请求url。
http://192.168.169.1/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=shanghai&email=lucy%40pikachu.com&submit=submit
伪造的url:
如果lucy在登录态点击了伪造的url:
即以当前的登录态向服务器发送了请求,地址就被修改为guangdong
防范措施
- 增加token验证(常用的做法): 对关键操作增加token参数,token值必须随机,每次刷新页面后台自动生成token并发送到前端的value里,用户每次提交请求都会同时提交token与后台储存的token核对。
- 关于安全的会话管理(避免会话被利用):
1.不要在客户端端保存敏感信息(比如身份认证信息)。
2.用户退出时会话立刻关闭,后台销毁用户的登录态。
3.设置会话过期机制,比如15分钟内无操作,则自动登录超时。 - 访问控制安全管理:
1.敏感信息的修改时需要对身份进行二次认证,比如修改密码时,需要判断旧密码。
2.敏感信息的修改使用post,而不是get。
3.通过http头部中的referer来限制原页面。