游戏的jQuery倒数计时器

时间:2014-10-08 09:42:49

标签: javascript jquery

我需要一个坚实的倒数计时器来进行一场奇怪的比赛,这不容易被黑客攻击。

我试图创建自己的计时器,但我觉得这太容易被黑客攻击了:

    var counter = 10;
    var timer = null;

function countdown(){
    if (counter == 10) {
        $(".time_box").html(counter);
    }
    if (counter <= 0) {
        stopInterval();
    }
    else {
        counter--;
        $(".time_box").html(counter);
    }
}
function reset() {
    clearInterval(timer);
    counter=0;
}
function startInterval() {
    $(".time_box").html(counter);
    timer= setInterval("countdown()", 1000);
}
function stopInterval() {
    clearInterval(timer);
}

有关安全改进的任何想法吗?

1 个答案:

答案 0 :(得分:1)

Javascript实际上并不是安全的地方,但我可以提出一个建议来降低用户介入的风险,就是封装你的代码,使其无法在对象之外进行修改。

例如,目前我只需在浏览器控制台中运行以下内容即可获得额外的时间:

counter = -99999

但是,如果你要封装你的逻辑,以便counter不被曝光,那么这是不可能的。

var MyFunction = function(){

   var counter = 10;
   var timer = null;

   function countdown(){
       if (counter == 10) {
           $(".time_box").html(counter);
       }
       if (counter <= 0) {
           stopInterval();
       }
       else {
           counter--;
           $(".time_box").html(counter);
       }
    }
    function reset() {
       clearInterval(timer);
       counter=0;
    }
    function startInterval() {
       $(".time_box").html(counter);
       timer= setInterval(countdown, 1000);
    }
    function stopInterval() {
       clearInterval(timer);
    }

    return {
      startInterval: startInterval
    }

}();

然后调用以下内容开始倒计时:

MyFunction.startInterval();

现在,在浏览器控制台中调用counter将无效,MyFunction.counter也不会。