html5 - 关于PHP服务器时间的验证问题
滿天的星座
滿天的星座 2017-05-16 13:08:27
[PHP讨论组]

我在做一个定时预约的时候,在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:我们验证使用的是阿里云的拖动验证,每一次验证都有记录值,如下图)

大神有没有谁知道这个逻辑的漏洞在什么地方,应该如何限制处理

滿天的星座
滿天的星座

全部回复(2)
PHP中文网

验证码的插件记录,是在你的服务器上么?要是不是,怕是时间不是同步的吧。

天蓬老师

第一你這是禁止用戶訪問頁面,但是,用戶提交表單的時候,訪問服務器url不一樣,即你這個表單url 是 index 但是通過表單保存數據服務器請求路徑 index/save,所以用戶可以直接將數據直接post到index/save,而你index/save 接受請求邏輯沒有設定對時間的限制,所以數據可以插入數據庫

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号