[請益] 確保在剛好5分鐘不差作答網頁測驗

看板Soft_Job (軟體人)作者 (Freebug)時間1年前 (2023/01/28 20:34), 1年前編輯推噓32(419127)
留言177則, 50人參與, 1年前最新討論串1/2 (看更多)
我最近在開發一個「線上測驗」的網頁 前端配合後端PHP 線上測驗的系統要剛好在5分鐘讓使用者作答 不能提早交卷也不能遲交 雖然我可以用前端的JavaScript 計時器計時 不過這樣只能防君子不能防小人 不法人士還是可以透過開發者工具偽造請求繞過網頁的計時器 所以這問題勢必要用後端來解決 我起初的想法是在後端開始出題時先用session記錄當時的timestamp 然後之後當伺服器後端接收到任一請求時,檢查收到時的timestamp跟當初session記錄的 timestamp相減是否剛好為5分鐘 不過這樣又會有另外一個問題 因為網路傳遞請求一定會有延遲 而每次的延遲時間都不同(也會根據使用者網路情況有所差異) 所以不管前端後端好像都無解? 各位有什麼想法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.12.25.127 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1674909243.A.7C9.html

01/28 21:00, 1年前 , 1F
換個角度思考,有必要到精確到連網路延遲都算進去嗎?
01/28 21:00, 1F
網路延遲千萬別小看 使用者網路狀況如果真的不好,延遲好幾分鐘都是有可能的

01/28 21:04, 1年前 , 2F
設計一個key的演算法 這樣可以避免非合法的送出
01/28 21:04, 2F
請問key演算法避免非合法送出的原理是什麼 是用非對稱加密法在哪裡加密? 因為在前端加密應該沒什麼意義 不法人士只要知道網頁原始碼就可以非法製造假的key和請求

01/28 21:05, 1年前 , 3F
要算網路延遲看NTP的作法,要避免使用者網路問題就是要多個
01/28 21:05, 3F

01/28 21:06, 1年前 , 4F
不同地方的server,然後timestamp要簽章
01/28 21:06, 4F

01/28 21:10, 1年前 , 5F
計時的部分還是需要用js去計
01/28 21:10, 5F
※ 編輯: freebug (39.12.25.127 臺灣), 01/28/2023 21:23:21

01/28 21:41, 1年前 , 6F
用個心跳包阿 延遲過久就當斷線了
01/28 21:41, 6F

01/28 21:46, 1年前 , 7F
後端紀錄時間是對的,然後時間一到在後端API會檢查
01/28 21:46, 7F

01/28 21:47, 1年前 , 8F
超過時間就不能對考試的任何操作進行動作,前端就看
01/28 21:47, 8F

01/28 21:47, 1年前 , 9F
有沒有動畫或是其他需求要做
01/28 21:47, 9F

01/28 21:51, 1年前 , 10F
網路延遲10分鐘你要算還是不算...
01/28 21:51, 10F

01/28 21:54, 1年前 , 11F
我原本以為是毫秒級的網路延遲,如果是分鐘級的,我想
01/28 21:54, 11F

01/28 21:54, 1年前 , 12F
關注在改善受測者或是系統的環境,會比關注在演算法好
01/28 21:54, 12F

01/28 21:54, 1年前 , 13F
得多吧
01/28 21:54, 13F

01/28 21:57, 1年前 , 14F
如果以台灣的網路環境來看,會延遲到分鐘級,除了受測
01/28 21:57, 14F

01/28 21:57, 1年前 , 15F
者跑去搭大眾運輸然後剛好過山洞沒訊號外,再來就是ISP
01/28 21:57, 15F

01/28 21:57, 1年前 , 16F
瞬斷,那這是要怎麼算XD
01/28 21:57, 16F

01/28 22:01, 1年前 , 17F
比較好奇是什麼類型的測驗跟受眾... 需要這麼來防...
01/28 22:01, 17F

01/28 22:08, 1年前 , 18F
黑客大賽?XD
01/28 22:08, 18F

01/28 22:09, 1年前 , 19F
延遲應該是無解
01/28 22:09, 19F

01/28 22:57, 1年前 , 20F
不能提早交卷是認真的嗎?
01/28 22:57, 20F

01/28 23:00, 1年前 , 21F
測驗差個30秒無所謂
01/28 23:00, 21F

01/28 23:16, 1年前 , 22F
可以用推文有提到的加密
01/28 23:16, 22F

01/28 23:16, 1年前 , 23F
延遲到分鐘級...這個無解吧XD
01/28 23:16, 23F

01/28 23:16, 1年前 , 24F
加密演算法可以加鹽,如果是 5 分鐘就用 300 (秒) 當鹽
01/28 23:16, 24F

01/28 23:16, 1年前 , 25F
把相關參數跟方法放在開發者工具碰不到的地方,
01/28 23:16, 25F

01/28 23:17, 1年前 , 26F
每秒把鹽的參數 +1,送出時資料過個加密到後端,
01/28 23:17, 26F

01/28 23:17, 1年前 , 27F
後端解得出來就表示使用者剛好是在 300 秒時按下送出
01/28 23:17, 27F

01/28 23:17, 1年前 , 28F
是說到底為什麼不能提早交啊...
01/28 23:17, 28F

01/28 23:19, 1年前 , 29F
考試內容包括手速? 要準秒按鈕?
01/28 23:19, 29F

01/28 23:24, 1年前 , 30F
寫 timer 時間到自動點送出算違規嗎? 算的話上面也無效
01/28 23:24, 30F

01/28 23:29, 1年前 , 31F
想請教開發者工具碰不到的地方
01/28 23:29, 31F

01/28 23:38, 1年前 , 32F
應該說是不能 console 直接改, debugger 還是無法
01/28 23:38, 32F

01/28 23:45, 1年前 , 33F
把測驗題目全部放canvas裡面 打上時間戳記錄影起來
01/28 23:45, 33F

01/28 23:49, 1年前 , 34F
五分鐘了不起100~200M吧 ㄎㄎ
01/28 23:49, 34F

01/29 00:22, 1年前 , 35F
驗證請求防止他人偽造的方法
01/29 00:22, 35F

01/29 00:22, 1年前 , 36F
ssr: csrf token with form
01/29 00:22, 36F
還有 101 則推文
01/30 10:53, 1年前 , 138F
後端延遲送達你要怎麼確認不是偽造的?
01/30 10:53, 138F

01/30 12:15, 1年前 , 139F
很簡單 加個驗證碼
01/30 12:15, 139F

01/30 12:15, 1年前 , 140F
不過我們這樣回沒什麼用 原po應該要把需求寫詳細點
01/30 12:15, 140F

01/30 14:18, 1年前 , 141F
我也覺得原PO過早於糾結怎麼確認5分鐘 先把需求跟背景弄清
01/30 14:18, 141F

01/30 14:18, 1年前 , 142F
跟相關承辦或是user 再做多一點的情境確認
01/30 14:18, 142F

01/30 15:20, 1年前 , 143F
前端五分整自動送出&跳轉,後端五分七秒後停止接收
01/30 15:20, 143F

01/30 15:20, 1年前 , 144F
剩下的設備與網路問題乾我屁事?
01/30 15:20, 144F

01/30 15:20, 1年前 , 145F
作答前規則就要聲明清楚,請使用者後果自負
01/30 15:20, 145F

01/30 17:18, 1年前 , 146F
確實 自動送出跟檢查一些就沒問題了吧
01/30 17:18, 146F

01/30 18:27, 1年前 , 147F
自動送出可以disable js停止,寫完再啟動送出,說網路延
01/30 18:27, 147F

01/30 18:27, 1年前 , 148F
01/30 18:27, 148F

01/31 02:04, 1年前 , 149F
原 PO 比較像是被公司的 PM 嚇到然後無限糾結五分鐘
01/31 02:04, 149F

01/31 06:34, 1年前 , 150F
這肯定是87pm 又在想一些不可能實現的87需求
01/31 06:34, 150F

01/31 08:03, 1年前 , 151F
先搞清楚需求再來問好不好
01/31 08:03, 151F

01/31 08:44, 1年前 , 152F
又一個經典工程師想太多跟現實需求脫節的案例 你假設網路會
01/31 08:44, 152F

01/31 08:44, 1年前 , 153F
延遲幾分鐘? 那要不要假設電腦會當機? 當然系統排除越多
01/31 08:44, 153F

01/31 08:44, 1年前 , 154F
例外狀況越好 但好的工程師要能在技術成本和效果之間做取捨
01/31 08:44, 154F

01/31 08:44, 1年前 , 155F
絕大部分狀況只需要前端計時就好 確實純前端有有可能被竄
01/31 08:44, 155F

01/31 08:44, 1年前 , 156F
改 但你的測驗情境是面向非專業人士的話 幾乎沒幾個人能辦
01/31 08:44, 156F

01/31 08:44, 1年前 , 157F
到 不然再加上交卷時在後端驗證時間 能應付99.99%的場景
01/31 08:44, 157F

01/31 10:22, 1年前 , 158F
先去跟PM說做不到 然後假裝退一步跟他說先求有再求好
01/31 10:22, 158F

01/31 12:50, 1年前 , 159F
基本上沒有哪個系統用後端計時,又去容忍前端延遲超過幾秒
01/31 12:50, 159F

01/31 12:50, 1年前 , 160F
網路爛你自己家的事,你要不要先確定好這需求真的存在
01/31 12:50, 160F

01/31 12:53, 1年前 , 161F
電競遊戲延遲太長就是斷線,容忍延遲時間長到隔壁的都能跑
01/31 12:53, 161F

01/31 12:57, 1年前 , 162F
來偷看螢幕再回去操作的還有人要比?
01/31 12:57, 162F

01/31 14:43, 1年前 , 163F
還是會有個一咪咪緩衝當臨界啦...卡buffering/IO還是其他
01/31 14:43, 163F

01/31 14:43, 1年前 , 164F
什麼鬼的 都有可能讓邏輯段在處理到的時候超過那麼幾毫秒
01/31 14:43, 164F

01/31 14:44, 1年前 , 165F
不過頂多就給個幾秒吧
01/31 14:44, 165F

01/31 15:21, 1年前 , 166F
網路延遲之外 計時本身也會有誤差
01/31 15:21, 166F

01/31 15:22, 1年前 , 167F
只要不是完全的0誤差 就只能訂一個可接受的範圍
01/31 15:22, 167F

01/31 15:26, 1年前 , 168F
很適合當老闆或客戶或pm,提什麼爛需求
01/31 15:26, 168F

01/31 16:26, 1年前 , 169F
需求聽起來很雞掰
01/31 16:26, 169F

01/31 18:28, 1年前 , 170F
想太多 就算你客制client也一樣會被破解 鑽牛角尖有點笨
01/31 18:28, 170F

01/31 18:31, 1年前 , 171F
直接server計時5分+10秒當緩衝就夠了
01/31 18:31, 171F

01/31 18:32, 1年前 , 172F
頂多幫他幾個動作或每15秒自動儲存一次就夠 別想太美好
01/31 18:32, 172F

02/01 00:14, 1年前 , 173F
推延遲時間長到隔壁都可以偷看XD
02/01 00:14, 173F

02/01 05:45, 1年前 , 174F
前後端都做計時,結束時統一用人工驗證
02/01 05:45, 174F

02/01 14:35, 1年前 , 175F
要是他五分鐘內就破解你的東西了 你還不給他過嗎??
02/01 14:35, 175F

02/02 08:01, 1年前 , 176F
這麼奇怪的要求,搞不好是政府的案子?
02/02 08:01, 176F

02/02 11:17, 1年前 , 177F
不能提早不能遲交是什麼意思 要剛好5分鐘的那一秒交嗎
02/02 11:17, 177F
文章代碼(AID): #1ZrHOxV9 (Soft_Job)
文章代碼(AID): #1ZrHOxV9 (Soft_Job)