三、CSRF(Token)
第三种CSRF是Token,同样我们重新登录一下。
首先我们了解一下什么是Token?每次请求,都增加一个随机码(需要够随机,不容易被伪造),后台每次对这个随机码进行验证。这个随机码就是Token。
然后我们看一下Pikachu平台的CSRF(token)页面,我们可以看到服务器返回的修改页面源码中有一个hiden的token
在文件token_get_edit.php中,我们也可以看到服务端会生成token:
在对应文件inc/function.php可以看到token的生成方式:
这里我们就要分析一下这个token的作用了。按照前面csrf get的方法,攻击者会伪造一个GET URL去让用户点击。但用户正常提供GET请求时,会把服务器返回的token填入和提交,而攻击者伪造URL时除非前期抓包获取到这个返回的token,否则他是不会知道这个token的。所以攻击者无法构造GET URL。同理,对于POST方法也是一样。
所以,使用token是一个很好的防御CSRF攻击的方法。