宝哥软件园

thinkphp集成系列中极限滑动验证码的geetest功能

编辑:宝哥软件园 来源:互联网 时间:2021-08-22

为某央企做官网,登录模块使用的thinkphp验证码类。但2019年6月10日至12日,国家要求央企检查官网漏洞,防范黑客攻击,恰逢贸易战激烈升级。因此,各机构都非常重视官网的安全。因此集团总部委托宁波专业检测公司用专业工具进行检测,后台验证码可以用编码工具暴力破解,并发函要求整改。下面是速度验证图

官方网站:http://www.geetest.com/

1.注册密钥

注册;创建应用程序;获取密钥;

二:导入sdk

/thinkphp/library/org/XB/geetestlip . class . PHP(这里,geetestlip.class.php是我改名后的getest类文件,原名class.geetestlib.php)

这包括thinkphp引入第三方类。我把第三方类放在Org/Util/Xb下,并给这个类文件添加了下面的命名空间,否则实例化这个类的时候就找不到文件了。

三:生成验证样式

admin/view/public/cdtsh _ log _ smfyws . PHP

!doctype html html head meta charset=' GBK '/title网站管理系统后台/title脚本语言=' JAVAScript ' type=' text/JAVAScript ' src=' http : _ _ JS _ _/jquery。JS '/脚本链接rel='样式表href=' _ _ CSS _ _/jquery。验证器。' CSS '脚本类型=' text/JavaScript ' src=' http : _ _ JS _ _/jquery。验证器。JS '/脚本脚本脚本类型=' text/JavaScript ' src=' http 3360 _ _ ' v 20130227 ' rel='样式表/script $(文档)。ready(function(){ var verifyimg=$(').verifyimg ').attr(' src ');$('.重新加载验证').单击(function(){ if(verifyimg。indexof('?))0){ $('.verifyimg ').attr('src ',verifyimg ' random=' math。random());}else{ $(' .verifyimg ').attr('src ',verifyimg.replace(/?*$/,'') '?'数学。random());} });});/script/head dydiv class=' wrap ' h1a href=' JavaScript 3:'style=' height: 116px宽度: 250像素后台管理中心/a/h1 form method=' post ' action=' { : u(' Admin/Public/cdtsh _ log _ smfws ')} ' div class=' log in ' ul Li input class=' input ' id=' username ' name=' username ' type=' text ' title='用户名需要数据规则=';用户名"占位符="用户名/span class=' msg-box n-right ' style=' position : absolute;left : 248 pxtop : 12px for=' username '/span/Li Li input class=' input ' name=' password ' type=' password ' title='密码需要数据规则=';密码"占位符="密码/span class=' msg-box n-right ' style=' position : absolute;left : 248 pxtop : 12px for=' password '/span/Li Li input class=' input ' id=' verify ' name=' verify ' type=' text ' style=' width :130 px;标题='密码数据-好的='占位符='验证码数据提示='输入验证码!标题='验证码需要数据规则=';文本;远程[{ : u(' Admin/Public/check _ verify ')}]'/div class=' yanzhengma _ box ' id=' verify show ' img class=' verify img reload verify ' style='游标:指针;align=' right ' src=' http : { : U(' public/verify ')} ' title='点击刷新/div span class=' msg-box n-right ' style=' position : absolute;left: 248pxtop: 12px对于='验证/span /li /ul!-输入类型='按钮'值='异步验证登录onclick='check_verify()' -!-输入类型="提交"值="发布"提交登录- div id='captcha'/div /ul按钮类型='submit' class='btn' id='subbtn '登录/button/div/form/div脚本src=' http :http://static。吉特。com/static/tools/gt。js/script脚本var handler=function(CaptChaobj){//将验证码加到编号为验证码的元素里captchobj。appendo(' #验证码');};//获取验证码$.get(' { : u(' Admin/Public/verifys ')} ',function(data) { //使用initGeetest接口//参数1:配置参数,与创建极验验证码实例时接受的参数一致//参数2:回调,回调的第一个参数验证码对象,之后可以使用它做附录之类的事件initgetest({ gt : data。gt,challenge: data.challenge,product: 'float ',//产品形式离线:data.success,new_captcha:'true ',width:'260px ',},handler);},' JSON ');/脚本/正文/html四:验证函数

/应用程序/公共/公共/函数

/* * * geet检测验证码*/function geet _ chce k _ verify($ data){ $ geet _ id=' 7149 e 2021d 7938157 e ';$ geet test _ key=' 62b 92039 E1 e9 cf 9455 ';$ gee test=new Org Util Xb gee testlib($ gee test _ id,$ gee test _ key);$ user _ id=$ _ SESSION[' geet '][' user _ id '];$ IP _ address=$ _ SESSION[' geet '][' IP _ address '];$dataa=数组(' user_id'=$user_id,#网站用户id 'client_type'='web ',#web:电脑上的浏览器;h5:手机上的浏览器,包括移动应用内完全内置的web视图本地人:通过原生软件开发工具包(软件开发工具包)植入应用应用的方式ip_address'=$ip_address,#请在此处传输用户请求验证时所携带的IP);if($ _ SESSION[' geet '][' gtserver ']==1){ $ result=$ geet-success _ validate($ data[' geet _ challenge '],$ data[' geet _ validate '],$ data[' geet _ seccode '],$ data a);//返回$ resultif($ result){//返回11;返回真;} else {//return 22;返回false } } else { if($ geet-fail _ validate($ data[' geet _ challenge '],$ data[' geet _ validate '],$ data[' geet _ seccode '])} {//返回33;返回真;} else {//return 44;返回false} }}//获取编号地址函数GetIP() { if(!空($ _ SERVER[' HTTP _ CLIENT _ IP ']){ $ CIP=$ _ SERVER[' HTTP _ CLIENT _ IP '];} elseif(!空($ _ SERVER[' HTTP _ X _ FORWARDED _ FOR ']){ $ CIP=$ _ SERVER[' HTTP _ X _ FORWARDED _ FOR '];} elseif(!空($ _ SERVER[' REMOTE _ ADDR ']){ $ CIP=$ _ SERVER[' REMOTE _ ADDR '];} else { $cip='无法获取!}返回$ cip}五:php生成验证码并验证

//极速验证公共函数verifys(){//require _ once dirname(dirname(dirname(_ _ FILE _ _)))))./lib/class。geeteslib。PHP ';//需要一次目录名(目录名(_ _ FILE _ _))./config/config。PHP ';//$ GtSdk=new GeetesLib(验证码_ID,私钥_ KEY);$ geest _ id=' 7149 e 2021d 7938157 e 9 ';$ geet _ key=' 62b 92039 E1 e 9 cf $ gee test=new Org Util Xb gee testlib($ gee test _ id,$ gee test _ key);//dump($ geet);死去;$ user _ id=' test $ data=array(' user _ id '=$ user _ id,#网站用户id 'client_type'='web ',#web:电脑上的浏览器;h5:手机上的浏览器,包括移动应用内完全内置的web视图本地人:通过原生软件开发工具包(软件开发工具包)植入应用应用的方式ip_address'=GetIP(),#请在此处传输用户请求验证时所携带的IP);$ status=$ geet-pre _ process($ data,1);//dump($ status);$ _ SESSION[' geet ']=数组(' gtserver'=$status,' user_id'=$user_id,' ip_address'=GetIP(),);echo $ geet-get _ response _ str();}公共函数cdtsh _ log _ smfyws(){ if($ _ SESSION[' userid ']){ $ this-redirect(' Admin/Index/Index ');} else { if(IS _ POST){ $ username=$ _ POST[' username '];$ password=$ _ POST[' password '];//$ geet _ challenge=$ _ POST[' geet _ challenge '];//$ geet _ validate=$ _ POST[' geet _ validate '];//$ geet _ seccode=$ _ POST[' geet _ seccode '];$ data=I(' post ');if($ data[' geet _ challenge ']==' ' | | $ data[' geet _ validate ']==' ' | $ data[' geet _ seccode ']==' '){ $ this-error('请进行图形验证');} else {//dump(geet _ chcek _ verify($ data));if(geet _ chcek _ verify($ data)){//echo '验证成功;if ($this-loginAdmin($username,$ password)){ $ data=M(' User ')-其中(' username=' ').$用户名.和password=''.md5($password),' ')-find();if ($data['status']!=1) { //判断是否禁用$ this-recordLoginAdmin($ _ POST['用户名'],$ _ POST['密码'],0)账号禁用');//记录登录日志$这个-错误('该帐号禁用');} else { $ save['上次登录时间']=time();$ save['上次登录_ IP ']=get _ client _ IP();$ save[' log in _ num ']=$ data[' log in _ num ']1;$ status=M('用户')-其中(数组(' id '=$ data[' id '])-save($ save);$ _ SESSION[' userid ']=$ data[' id '];$ _ SESSION[' user ']=$ data[' username '];$ _ SESSION[' rid ']=$ data[' a _ Id '];$ this-recordLoginAdmin($ _ POST[' username '],$_POST['password'],1);//记录登录日志$这个-重定向('管理/索引/索引');//$this-success('登录成功,U('管理/索引/索引');} } else { $ this-recordLoginAdmin($ _ POST[' username '],$_POST['password'],0,'账号密码错误');//记录登录日志$这个-错误('登录失败');} }else{ //echo '图形验证失败;$这个-错误('图形验证失败');} } } else { $ this-display();} } }到这里就结束了

总结

以上所述是小编给大家介绍的框架整合系列之极验滑动验证码极验验证码功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

更多资讯
游戏推荐
更多+