x x
当前位置 : 主页 > 网站建设 > 正文

DedeCMS增加PHP验证码防止机器恶意提交表单

原创

重庆seo2017-12-25阅读(773)自定义表单dedecms

DedeCMS表单恶意提交的情况时有发生,一般有人工恶意提交和机器恶意提交两种,给站长们造成许多困扰。人工恶意提交表单一般可以通过前端写JS,判断字段不为空或者不和规范阻拦提交,效果还是挺好的。

但机器提交是不经过JS判断的,而是PHP的方法,就必须修改plus目录下的diy.php文件,以达到阻拦恶意提交表单的目的。下面采用增加表单提交验证码的方式实现放置恶意提交表单的功能。

表单提交前端部分

机器通过扫描网站判断出是织梦做的,/plus/diy.php?action=post&diyid=1能直接访问,网站模板的前端JS判断是拦不住恶意提交表单的,需要从根源上解决问题。表单提交的模板在/templets/plus/post_diyform.htm,在<form>表单里面增加如下代码(具体HTML根据实际情况)

<input name="validate" type="text" id="vdcode" style="text-transform:uppercase;" size="8"/>
<img id="vdimgck" class="yzmimg" align="absmiddle" onClick="this.src=this.src+'?'" style="cursor: pointer;" alt="看不清?点击更换" src="../include/vdimgck.php"/>
<span onClick="changeAuthCode();">看不清?</span>

在</body>之前增加JS代码,这里的修改部分适合用在任意页面。

<script type="text/javascript"> 
function changeAuthCode() { 
var num = new Date().getTime(); 
var rand = Math.round(Math.random() * 10000); 
num = num + rand; 
$('#ver_code').css('visibility','visible'); 
if ($("#vdimgck")[0]) { 
$("#vdimgck")[0].src = "../include/vdimgck.php?tag=" + num; 
} 
return false; 
} 
</script>

PHP修改部分

打开/plus/diy.php文件,找到代码:

$fieldarr = explode(';', $dede_fields);

在这句代码上面添加以下代码:

//新增验证码
$validate = empty($validate) ? '' : strtolower(trim($validate));           
$svali = strtolower(GetCkVdValue());
if(($validate=='' || $validate != $svali) && preg_match("/6/",$safe_gdopen)){
ResetVdValue();
ShowMsg('验证码不正确!',$dede_add,0,1000);
echo '<script language="javascript">history.go(-1);</script>';//返回原页面
exit();//结束不提交
}

    本文地址:https://www.vi586.com/mip/web/496.html
    版权声明:原创文章,版权归重庆SEO吖七所有,欢迎分享本文,支持原创,转载请保留出处