html5 - 關於PHP伺服器時間的驗證問題
滿天的星座
滿天的星座 2017-05-16 13:08:27
0
2
526

我在做一個定時預約的時候,在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)
Ty80

驗證碼的插件記錄,是在你的伺服器上麼?要是不是,怕是時間不是同步的吧。

Peter_Zhu

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!