Token是如何防止CSRF的?
CSRF的主要问题是敏感操作的链接容易被伪造,那么如何让这个链接不容易被伪造?
每次请求,都增加一个随机码(需要够随机,不容易伪造),后台每次对这个随机码进行验证。
CSRF攻击防范措施
增加token验证(常用的做法):
1,对关键操作增加token参数,token值必须随机,每次都不一样,关于安全的会话管理(避免会话被利用):
1,不要在客户端端保存敏感信息(比如身份认证信息);
2,测试直接关闭,退出时,的会话过期机制;
3,设置会话过期机制,比如15分钟内无操作,则自动登录超时
访问控制安全管理:
1,敏感信息的修改时需要对身份进行二次认证,比如修改账号时,需要判断旧密码;
2,敏感信息的修改使用post,而不是get;
3,通过http 头部中的referer来限制原页面
增加验证码
一般用在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性
练习部分
打开CSRF Token部分,同时打开brupsite抓包,网页修改个人信息提交后查看burpsite抓包文件。
查看burpsite的抓包信息,可见相比之前的CSRFGET,现在的请求信息中多了token信息。
我们回到网页打开f12控制台寻找一下token来自哪里,网页进入修改个人信息的页面,用控制台左上角选择工具选中各输入框,在控制台中找到form表单,里面有一个hidden类型的输入框有token的具体数值。
因为有token拦路,每一次访问后后台的token都会变化,想像之前一样直接把代码截取出来写出url地址肯定不行。要获取到token,我们先在burpsite,extender中的bapp store中找到csrf token tracker插件安装。
在插件中勾选sync,在下方空白处输入host,127.0.0.1;输入名称,token。后面的值一栏先暂时不管。
回到porxy的http历史记录,找到发送修改个人信息的get请求,右键发送到repeater。
在repeater中修改要改的具体数值(这里把phonenum改为了9768),点击发送。
点击左上角出现的跟随重定向。
在右边的响应中可以看到我们已经成功的把phonenum改为了9768。
回到网页刷新一下,可见phonenum改为了9768。
成功的绕过了token利用了csrf漏洞。