登录抓包信息如下:
我们这里做一下,修改操作,并查看BURP抓包结果!!!
这里发现修改操作中,带了一个TOKEN值!!!
我们看一下提示!!!
源码里面有一个隐藏TOKEN,干啥用的?
小知识: CSRF的主要问题是敏感操作容易被伪造,我们可以加入Token让请求不容易被伪造
每次请求,都增加一个随机码(需要够随机,不容易被伪造),后台每次对这个随机码进行验证。
防范CSRF措施:
增加token验证(常用的做法):
对关键操作增加token参数,token值必须随机,每次都不一样,防止暴破。
关于安全的会话管理(避免会话被利用):(CSRF的攻击必须是登录态)
不要在客户端保存敏感信息(比如身份认证信息);
设置会话过期机制,比如15分钟内无操作,则自动登入超时;
访问控制安全管理:
敏感信息的修改时需要对身份进行二次认证,比如修改账号时,需要判断旧密码;
敏感信息的修改尽量使用post,而不是get;(post的安全性比get高些)
通过http 头部中的referer来限制原页面(比如修改个人信息的referer必须来自本域,不能是其他域的或者没有referer)
增加验证码(也可以看成 小token但需要人机交互):
至于那个隐藏的TOKEN是干啥用的?我们试着,把隐藏TOKEN的TYPE修改成TEXT
就是提交修改信息时,需要提交一个TOKEN值才能修改!!!
我们看下TOKEN是如何生成的!!!
此时,我看一下,后台代码!!!!
在文件token_get_edit.php中,我们也可以看到服务端会生成token,并获取TOKEN值传入参数修改界面,随参数修改一起提交!!!!
$_SESSION[‘token’]:
在PHP中,使用$_SESSION[]可以存储特定用户的Session信息。并且每个用户的Session信息都是不同的。读取Session变量信息(可赋值给一个变量或者直接输出):变量=$_SESSION[“Session名称”];
生成TOKEN方法!!!
在目录 D:\phpStudy\PHPTutorial\WWW\pikachu\inc\function.php可以看到token的生成方式:
大佬说:这里我们就要分析一下这个token的作用了。按照前面csrf get的方法,攻击者会伪造一个GET URL去让用户点击。但用户正常提供GET请求时,会把服务器返回的token填入和提交,而攻击者伪造URL时除非前期抓包获取到这个返回的token,否则他是不会知道这个token的。所以攻击者无法构造GET URL。同理,对于POST方法也是一样。所以,使用token是一个很好的防御CSRF攻击的方法。
来源:freebuf.com 2021-07-20 08:14:52 by: 知非知非知非
请登录后发表评论
注册