后台验证码本应是防止暴力破解的屏障,但是织梦后台的验证码,只有当你输错验证码之后,才会给一个新的验证码,这就犯了一个最严重的逻辑漏洞
//登录检测
$admindirs = explode('/',str_replace("\\",'/',dirname(__FILE__)));
$admindir = $admindirs[count($admindirs)-1];
if($dopost=='login')
{
$validate = empty($validate) ? '' : strtolower(trim($validate));
$svali = strtolower(GetCkVdValue());
if(($validate=='' || $validate != $svali) && preg_match("/6/",$safe_gdopen)){
ResetVdValue();
ShowMsg('验证码不正确!','login.php',0,1000);
exit;
} else {
$cuserLogin = new userLogin($admindir);
if(!empty($userid) && !empty($pwd))
{
$res = $cuserLogin->checkUser($userid,$pwd);
//success
if($res==1)
{
$cuserLogin->keepUser();
if(!empty($gotopage))
{
ShowMsg('成功登录,正在转向管理管理主页!',$gotopage);
exit();
}
else
{
ShowMsg('成功登录,正在转向管理管理主页!',"index.php");
exit();
}
}
//error
else if($res==-1)
{
ShowMsg('你的用户名不存在!',-1,0,1000);
exit;
}
else
{
ShowMsg('你的密码错误!',-1,0,1000);
exit;
}
}
//password empty
else
{
ShowMsg('用户和密码没填写完整!',-1,0,1000);
exit;
}
}
}
这是后台login.php文件中的登录验证