Heim  >  Artikel  >  Backend-Entwicklung  >  验证码被绕过的处理方法_PHP教程

验证码被绕过的处理方法_PHP教程

WBOY
WBOYOriginal
2016-07-13 10:53:591546Durchsuche

我们先来分析下,有验证码发布的流程
1,显示表单
2,显示验证码(条用生成验证码的程序), 将验证码加密后放进 session 或者 cookie
3,用户提交表单
4,核对验证码无误,数据合法后 写入数据库教程完成

用户如果再发布一条,正常情况下,会再次访问表单页面,验证码图片被动 更新, session 和 cookie 也就跟着变了
但是灌水机操作 不一定非要使用表单页面,它可以直接 模拟post 向服务端程序 发送数据;这样验证码程序没有被调用,当然session和cookie存储的加密验证码就是上次的值,也就没有更新,这样以后无限次的通过post直接发送的数据 ,而不考虑验证码,验证码形同虚设!

所以,在核对验证码后 先将 session和cookie的值清空,然后做数据合法性判断,然偶入库!
这样 一个漏洞就被补上了!

if ( md5($_post['vcode']) == $_session['vcode']  ) {
    $_session['vcode']='';//这句非常重要
} else {
    exit '验证码不对!';
}
//接下来的处理
......
?>

生成验证码图片的程序

session_start();
......
$v = new authcode();
$vcode = $v->getauthcode();
$_session['vcode'] = md5($vcode );
........
?>

表单页面


......
看不清请刷新页面


 验证码是怎样被绕过的

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/632363.htmlTechArticle我们先来分析下,有验证码发布的流程 1,显示表单 2,显示验证码(条用生成验证码的程序), 将验证码加密后放进 session 或者 cookie 3,...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn