我在做一个定时预约的时候,在form表单有一个验证条件是判断了当前时间是否达到设置时间点,如果没到的话,是不能执行的
<?php
ini_set('date.timezone','Asia/Shanghai');
$setTime = date("Y-m-d");
$setTime = strtotime("$setTime 10:30:00");
if(time() < $setTime){
exit("未到预约时间,请稍后访问");
}
?>
<form>……</form>
按照逻辑的话如果时间不到,表单内容是没办法访问和提交的
但是我通过表单验证码的插件记录可以看到10点29分40秒钟左右,已经有用户完成了form表单里面的验证码验证
我们自己测试时候,也不知道该用户如何操作的
(PS:我们验证使用的是阿里云的拖动验证,每一次验证都有记录值,如下图)
大神有没有谁知道这个逻辑的漏洞在什么地方,应该如何限制处理
验证码的插件记录,是在你的服务器上么?要是不是,怕是时间不是同步的吧。
第一你这是禁止用户访问页面,但是,用户提交表单的时候,访问服务器url不一样,即你这个表单url 是index 但是通过表单保存数据服务器请求路径index/save,所以用户可以直接将数据直接post到index/save,而你index/save 接受请求逻辑没有设定对时间的限制,所以数据可以插入数据库