看起來目的是要考試防弊,選擇的方法是透過timestamp。
只透過timestamp會有很多問題/漏洞。原文提到的就是其中一個。
還要配合其他前端手法一起處理。
真正問題應該是規格需求不夠明確,要重新回頭思考要解決的問題與情境。
- 線上測驗的(同時)使用者數量
影響設計方法,全靠後端,量一大後端也要撐得住。
通常是前、後端都做部分工作。
- 測驗的嚴謹程度 (自我評量/一般考試/國家考試)
防弊程度
惡意的篡改 / 造假 / replay 都要處理
- 使用場景 (各種電腦手機上 / 指定考場電腦上)
在指定場合電腦上,一般人沒機會/沒時間竄改前端 ex: 多益考場
不同場景就可以有不同解法
把實際場景考慮進去,才有辦法做出合適設計。
基本上業界應該都有答案,金融業跟各種線上考試的都遇過這些問題。
Google到對的關鍵字應該就有答案了
※ 引述《freebug (Freebug)》之銘言:
: 我最近在開發一個「線上測驗」的網頁
: 前端配合後端PHP
: 線上測驗的系統要剛好在5分鐘讓使用者作答
: 不能提早交卷也不能遲交
: 雖然我可以用前端的JavaScript 計時器計時
: 不過這樣只能防君子不能防小人
: 不法人士還是可以透過開發者工具偽造請求繞過網頁的計時器
: 所以這問題勢必要用後端來解決
: 我起初的想法是在後端開始出題時先用session記錄當時的timestamp
: 然後之後當伺服器後端接收到任一請求時,檢查收到時的timestamp跟當初session記錄的
: timestamp相減是否剛好為5分鐘
: 不過這樣又會有另外一個問題
: 因為網路傳遞請求一定會有延遲
: 而每次的延遲時間都不同(也會根據使用者網路情況有所差異)
: 所以不管前端後端好像都無解?
: 各位有什麼想法嗎?