我在做一個定時預約的時候,在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 接受請求邏輯沒有設定對時間的限制,所以資料可以插入資料庫