JFinal验证码validate漏洞

com.jfinal.render.CaptchaRender的validate方法,是根据用户输入的验证码md5加密后和cookie里取到的进行比较,cookie里的验证码加密串完全可以伪造,那么每次提交验证的时候,保持用户输入的验证码和伪造的一致,就可以绕过验证,验证码就形同虚设了。。

评论区

Dreamlu

2016-09-23 16:23

这个有点意思

happyboy

2016-09-23 17:37

看了一下源代码,感觉确实有这种风险,不管你以后的验证码如何变化,我只要记住你第一次或者其中任何一次的cookie值以及对应的明文验证码,我在模拟请求前,每次都先重置你的cookie值换成其中一次的,然后固定发送对应的明文验证码即可。因为你前台的cookie已经被我改了,所以你真正的验证码已经没什么用了。这种验证思路的不足之处在于,用于验证的关键数据cookie值可以伪造。各位大神,不知道我说的对不对。

JFinal

2016-09-23 20:00

@天朝子民 @Dreamlu @happyboy 第四个发现该问题的了,git 上已经提交了改进代码,而且 jfinal 2.3 SNAPSHOT 版本也可以使用了,只不过这个改进仍然不完善,正式改的 jfinal 2.3 会再次改进

Ajsgn

2016-09-27 13:15

66666666666666

broccoli0

2016-10-08 21:18

验完从服务器端删掉不就行了嘛,下次换cookie有什么用,上一次的验证码已经从服务器删掉了

海哥

2016-10-29 09:15

参考 JPress 的处理方法,才是最佳的方案。哈哈