【发布时间】:2022-01-15 12:19:18
【问题描述】:
我正在为一个考试网站创建一个 JS 计数器,我发现他们可以通过运行 sec += 10000 在控制台中非常轻松地添加额外的时间,我该如何阻止它。
我在后端使用 laravel
runCounter();
function runCounter() {
let min = 45;
let sec = min * 60;
let x = setInterval(function() {
console.log(secFormat(sec))
sec -= 1;
if (sec <= 0) {
endExam();
clearInterval(x);
}
}, 1000);
}
function secFormat(x) {
x = Number(x);
let h = Math.floor(x / 3600);
let m = Math.floor(x % 3600 / 60);
let s = Math.floor(x % 3600 % 60);
m += h * 60;
if (m < 10) {
m = "0" + m
}
if (s < 10) {
s = "0" + s
}
return m + ":" + s;
}
function endExam() {
alert('exma ended');
}
【问题讨论】:
-
您无法阻止用户在他们的浏览器中显示他们想要的任何内容。
-
在线编程的基本规则:假设用户会尝试作弊。所有重要的事情都必须由服务器处理
-
您必须解释为什么它在您的情况下不起作用。任何阻止用户修改在他们的机器上执行的 JavaScript 的尝试只会导致人们需要弄清楚如何绕过你的尝试
-
@UnholySheep 是正确的。你无法保护客户。从安全角度来看,客户端已经受到威胁。您唯一可以信任的就是服务器。
标签: javascript laravel