关于token防止csrf的一个疑问

OSC首席键客 发布于 2014/08/25 20:16
阅读 1K+
收藏 0
PHP

用token防止csrf是一种方法,现在我有个疑问,就是:

token是渲染页面的时候生成的,比如一个post表单,如果我在用户提交之前获取到了这个token,先把这个token用掉了,那不是照样可以伪造吗?

加载中
0
aiasfina
aiasfina

CSRF 全称跨站请求伪造。

打个比方,你在B服务器上提交,B服务器将数据转发到A服务器。如果没有这个token,A服务器通过cookie 确认了你的身份然后就接收了,攻击完成。

加入了 token 后,由于 token 是根据用户访问 A 服务器页面生成的,B 服务器没有办法获取,失败。

0
oneMore
oneMore
能甩掉前台的但是甩不掉服务器上面的。另,防止csrf无非就是1.验证请求来源(来源可疑伪造,不靠谱),2.加验证码,加token校验,前后台对比。希望补充
OSC首席键客
OSC首席键客
不是啊!我觉得你没理解我的意思!
0
_yjp
_yjp

我一开始也有楼主这样的疑惑,建议楼主详细的了解下CSRF攻击时怎么一回事。

CSRF攻击例子:

用户在网站A已经认证,在认证cookie还没有失效的状况下。在访问B网站时,B网站的一个操作指向了A的服务器。当B网站引诱用户点击这个操作时,指向A的请求会带上A认证的COOKIE(请求伪造)。

当A加上token保护这个请求时,相当于每次都会验证该请求的来源。加大B网站伪造的难度,达到保护目的。

网站加上token主要是加大了请求伪造的难度(特别是自动攻击),并不能完全阻挡CSRF攻击。




_yjp
_yjp
回复 @铂金眼 : 是的,有些网站的token还是固定的,都不需要”提前用掉“。 理论上http是不安全的,任何信息都可以伪造, 防御手段只是增加攻击门槛。
OSC首席键客
OSC首席键客
这么说token也是有可能失败的,就是我所说的这种情况有可能发生?
0
eechen
eechen
token一般都在表单的隐藏域里,其他站点很难拿到,能够有效防止CSRF。
OSC首席键客
OSC首席键客
也就是说也有可能被拿到,被伪造?看人的水平了?
0
乐逍遥1
乐逍遥1

看到有些站点是把 csrf_token 放在页面header部分,这样的话第三方网站自动跳转的时候header仍然可以带到服务器后台的对吧,这样的话岂不是起不到任何的效果了

返回顶部
顶部