谈Token验证对CSRF的意义

在前面我已经就DVWA作为实验环境对csrf攻击进行了测试,并且利用漏洞成功修改了密码。实现了了跨站请求伪造攻击。而攻击成功的原因就是因为验证机制不够严谨。

今天我就当前最流行的也是最安全的验证机制做一下讨论。

Csrf攻击的本质就是重要操作的所以参数都可以被攻击者猜测了解到。攻击者知道所以参数的意义就可以构造出合适的链接发起攻击。所以,有一种解决方案就是对参数进行加密,但这样对数据分析工作和数据收藏就带来很多不便。但是,使用Token就相当于在参数的最后再加一个参数。攻击者就无法构成完整的攻击者链接,完成csrf攻击。

在使用Token防御csrf攻击时步骤如下:

1.每当用户登陆成功后会随时生成一串字符串,存储在Session中。

2.在敏感操作中加入隐藏标签,value的值为Session中保存的值,如:
谈Token验证对CSRF的意义
注:如果是Get请求则考虑把Token的值放在cookie中。

3.提交请求后,服务器会拿着session中的字符串于提交的token做比较。如果一致,则验证通过。

正如我们前面所讲,如果一个网站存在xss漏洞那么防御csrf攻击就没什么意义,因为攻击者可以通过js获取到token值。