看起来目的是要考试防弊,选择的方法是透过timestamp。
只透过timestamp会有很多问题/漏洞。原文提到的就是其中一个。
还要配合其他前端手法一起处理。
真正问题应该是规格需求不够明确,要重新回头思考要解决的问题与情境。
- 线上测验的(同时)使用者数量
影响设计方法,全靠后端,量一大后端也要撑得住。
通常是前、后端都做部分工作。
- 测验的严谨程度 (自我评量/一般考试/国家考试)
防弊程度
恶意的篡改 / 造假 / replay 都要处理
- 使用场景 (各种电脑手机上 / 指定考场电脑上)
在指定场合电脑上,一般人没机会/没时间窜改前端 ex: 多益考场
不同场景就可以有不同解法
把实际场景考虑进去,才有办法做出合适设计。
基本上业界应该都有答案,金融业跟各种线上考试的都遇过这些问题。
Google到对的关键字应该就有答案了
※ 引述《freebug (Freebug)》之铭言:
: 我最近在开发一个“线上测验”的网页
: 前端配合后端PHP
: 线上测验的系统要刚好在5分钟让使用者作答
: 不能提早交卷也不能迟交
: 虽然我可以用前端的JavaScript 计时器计时
: 不过这样只能防君子不能防小人
: 不法人士还是可以透过开发者工具伪造请求绕过网页的计时器
: 所以这问题势必要用后端来解决
: 我起初的想法是在后端开始出题时先用session记录当时的timestamp
: 然后之后当服务器后端接收到任一请求时,检查收到时的timestamp跟当初session记录的
: timestamp相减是否刚好为5分钟
: 不过这样又会有另外一个问题
: 因为网络传递请求一定会有延迟
: 而每次的延迟时间都不同(也会根据使用者网络情况有所差异)
: 所以不管前端后端好像都无解?
: 各位有什么想法吗?