帝国论坛帝国网站管理系统交流区帝国CMS使用交流[原创]帝国cms瑕不掩瑜之验证码的马其诺防线 【本版专题贴子】  
主题:[原创]帝国cms瑕不掩瑜之验证码的马其诺防线 [加入收藏夹]   

jiuhecai
用户头衔:探花

精华贴   :0
发贴数   :3022
经验值   :8616
注册时间:2014-07-02
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
[原创]帝国cms瑕不掩瑜之验证码的马其诺防线
验证码,就是为了增加机器识别难度,避免遭受程序攻击。
帝国cms 的验证码,还可以增加干扰像素,提高识别难度。

但是,人家不用识别,直接md5反查,几秒钟就用机器知道了验证码...
这,让我们情何以堪...


坏就坏在,帝国cms把验证码的md5值,保存到库克里传给了客户端
密文的生成很辛苦,md5了三遍不是?

[该贴被修改 2 次,最后修改时间 2016-03-04 21:26:59 ]


帝国插件 插件定制。帝国临时工。查杀顽固木马。专业解决难题。qq--110102296
2016-03-04 21:24:34 已设置保密 顶部 回复 引用 报告 编辑 删除

jiuhecai
用户头衔:探花

精华贴   :0
发贴数   :3022
经验值   :8616
注册时间:2014-07-02
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 2 楼]


可这坚固的马其诺防线,人家都懒得理会。

你可能说,就一个验证码,没有啥,不要紧
可你要干扰像素干啥?要金刚刺猬干啥?



帝国插件 插件定制。帝国临时工。查杀顽固木马。专业解决难题。qq--110102296
2016-03-04 21:27:29 已设置保密 顶部 回复 引用 报告 编辑 删除

jiuhecai
用户头衔:探花

精华贴   :0
发贴数   :3022
经验值   :8616
注册时间:2014-07-02
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 3 楼]

解决的方法也很简单:
修改 文件 e/class/connect.php....

3660  //设置验证码
3661  function ecmsSetShowKey($varname,$val,$ecms=0){
3662      global $public_r;
3663      $val=md5($val);
3664      $time=time();
3665      $checkpass=md5(md5($val.'EmpireCMS'.$time).$public_r['keyrnd']);
3666      $key=$time.','.$checkpass; // 原来为 $key=$time.','.$checkpass.','.$val;
3667      esetcookie($varname,$key,0,$ecms);
3668  }
3669  

还有一个地方:
function ecmsCheckShowKey($varname,$postval,$dopr,$ecms=0){
3672      global $public_r;
3673      $r=explode(',',getcvar($varname,$ecms));
3674      $cktime=$r[0];
3675      $pass=$r[1];
3676      $val=$r[2]; //请注释掉这一句
3677      $time=time();
3678      if($cktime>$time||$time-$cktime>$public_r['keytime']*60)
3679      {
3680          printerror('OutKeytime','',$dopr);
3681      }
3682      if(empty($postval))   //  原来为   if(empty($postval)||md5($postval)<>$val)   
3683      {
3684          printerror('FailKey','',$dopr);
3685      }
3686      $checkpass=md5(md5(md5($postval).'EmpireCMS'.$cktime).$public_r['keyrnd']);
3687      if($checkpass<>$pass)
3688      {
3689          printerror('FailKey','',$dopr);
3690      }
3691  }


这样,密文就只有$checkpass和明文 $time,三次md3加密后反查难度非常大
还可看到,密钥$public_r['keyrnd']非常重要,如果不慎泄漏,则完全可以伪造cookie突破验证码。



帝国插件 插件定制。帝国临时工。查杀顽固木马。专业解决难题。qq--110102296
2016-03-04 21:40:03 已设置保密 顶部 回复 引用 报告 编辑 删除

jiuhecai
用户头衔:探花

精华贴   :0
发贴数   :3022
经验值   :8616
注册时间:2014-07-02
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 4 楼]

背景资料:
http://bbs.phome.net/ShowThread/?threadid=339934&forumid=13

http://www.wooyun.org/bugs/wooyun-2014-075186/



帝国插件 插件定制。帝国临时工。查杀顽固木马。专业解决难题。qq--110102296
2016-03-04 21:43:32 已设置保密 顶部 回复 引用 报告 编辑 删除

帝兴
用户头衔:管理员

精华贴   :0
发贴数   :1090
经验值   :14836
注册时间:2006-11-03
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 5 楼]

验证码主要是为了防止机器识别,你人工去解密生成过的加密验证码内容和在网页直接输入看到的验证码没有区别,甚至还更复杂。
而且帝国的验证码不仅仅是验证输入的验证码,最主要的还是后台设置的验证码密钥内容,知道验证码内容一样没有用,没有意义。而且你上面修改用处也不大,提交者还可以少发包一个变量内容。
要达到最佳防止群发提交效果:最主要还是后台设置的验证码过期时间不要设置太长。



新手帮助:帝国CMS使用教程在线浏览 帝国CMS新手常见问题
2016-03-05 09:19:56 已设置保密 顶部 回复 引用 报告 编辑 删除

英主
用户头衔:进士

精华贴   :0
发贴数   :782
经验值   :2281
注册时间:2009-03-12
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 6 楼]

纯路过




2016-03-05 09:25:37 已设置保密 顶部 回复 引用 报告 编辑 删除

jiuhecai
用户头衔:探花

精华贴   :0
发贴数   :3022
经验值   :8616
注册时间:2014-07-02
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 7 楼]

感谢管理员的回复。但是我仍然有不同意见。
1.修改后,提交者是少发一个变量包,但是正是这个变量包暴露了验证码的md5值。
2.验证码的md5值,真的有必要发给客户吗?我看纯属多此一举。
3.“人工去解密生成过的加密验证码内容和在网页直接输入看到的验证码没有区别”。但是绝不是人工的,是用程序几秒搞定的。四位字母数字随机验证码,cmd5完全秒杀了。


[该贴被修改 1 次,最后修改时间 2016-03-05 10:14:21 ]


帝国插件 插件定制。帝国临时工。查杀顽固木马。专业解决难题。qq--110102296
2016-03-05 10:12:33 已设置保密 顶部 回复 引用 报告 编辑 删除

aipfq
用户头衔:举人

精华贴   :0
发贴数   :239
经验值   :1027
注册时间:2015-12-07
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 8 楼]

这个傻逼就喜欢瞎折腾一些无用的东西,没有一个帖子内容有用。




2016-03-05 10:47:42 已设置保密 顶部 回复 引用 报告 编辑 删除

lyingjie
用户头衔:举人

精华贴   :0
发贴数   :192
经验值   :746
注册时间:2008-09-11
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 9 楼]

真的就防止机器识别了吗?为什么我的评论天天还有那么多灌水机发内容



http://www.xxinrui.com
2016-03-26 18:17:09 已设置保密 顶部 回复 引用 报告 编辑 删除

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1