PHP使用token验证阻止FORM表单恶意POST提交
我们网站上经常会使用到FORM表单来提交信息,有时会被一些无聊的人批量进行恶意提交,影响网站的服务性能。下面介绍一下使用token验证阻止FORM表单恶意POST提交的方法。
原理
通过对form表单hidden提交字段的处理实现token验证功能,防止非法来源数据的访问,增加数据操作的安全性。
实现方法
前台form表单添加以下的隐藏类:
<form action="some.php" method="POST">
<?php $module=mt_rand(100000,999999);?>
<input type='hidden' name='module' value='<?php echo $module;?>'/>
<input type='hidden' name='timestamp' value='<?php echo time();?>'/>
<input type='hidden' name='token' value='<?php echo md5($module.'#$@%!^*%*ty'.time());?>'/>
<input type='hidden' value='<?php echo home_url();?>' name='tougao_form' />
</form>
在处理表单的PHP文件里最上面加以下的判断语句:
$module = $_POST['module'];
$timestamp = $_POST['timestamp'];
$token = md5($module.'#$@%!^*%*ty'.$timestamp);
if($token != $_POST['token']){
echo('非法提交!');
exit();
}
通过这个方法可以一定程度上减少恶意的POST提交。