隐藏内容以防止 JavaScript 制作的游戏中作弊

问题描述 投票:0回答:2

我知道不可能完全阻止用户作弊和/或破解网络应用程序,但我发现的这个漏洞很容易发现,确实应该堵住。

https://mcthompsonatl.github.io/

我实际上并没有编写任何代码。我得到了这个非常基本的“找到所有 6 个物体”(在本例中为钥匙)猜谜游戏,该游戏是一位前雇员为我们的一个客户升职而编写的,他本来就不是程序员。逻辑是合理的,并且需要一些格式化工作,但是在开发者模式下测试时,我花了很少的时间发现只需检查

<div>
类的每个
card
就可以轻松赢得游戏。因为这是用于促销竞赛,所以我一直在尝试找出一种方法来隐藏或更改破坏游戏的代码,以便在开发者模式下检查任何卡片都不会显示任何提示。

我能找到的一个解决方案是将卡片元素更改为多个 HTML5 Canvas 元素。这样做的两个问题是 1. 我使用 Canvas 的经验为零,2. 即使我这样做了,这似乎也是一项极其漫长而痛苦的任务,我不确定我是否会被允许有这样的时间我们需要学习足以解决问题的知识。这是可以用 PHP 隐藏的东西吗?我在这里找到一个明智的解决方案有点困惑。如有任何帮助,我们将不胜感激。

javascript html canvas hide secure-coding
2个回答
1
投票

评论太长了。

基于我从游戏中了解到的内容。你有 36 个盒子,你需要点击随机的盒子。如果您点击 X 个正确的方框,您就赢了。

我能够通过检查 HTML 并搜索指示获胜关键的图像来作弊。图片名称为

images/keytowin/frontImage.png

解决方案可能是不将指示“正确”选择的图像预先分配给 HTML div。相反,仅在单击图像后才分配图像。这将使查找变得更加困难,因为仅靠 HTML 无法泄露它。

这里的想法 y 是

Random
。使用 Javascript,生成 3 个介于 1 到 36 之间的随机数。这三个随机数表示中奖框。如果用户单击一个框,并且它具有相同的编号(我注意到
div
编号为
data-id="1"
),则使用 JS 动态添加图像到内部 div 中。

但这三个随机数将在游戏开始时确定。因此,模糊变量很重要。

我提供了示例代码来演示这个概念。

var luckyNumbers = getUniqueNumbers();
var winImg = "<img  src='https://mcthompsonatl.github.io/images/keytowin/frontImage.png' alt='X LOGO'>";
var loseImg = "<img  src='https://mcthompsonatl.github.io/images/keytowin/TryAgain.png' alt='X LOGO'>";

console.log(luckyNumbers);

$(".card").on("click", function() {

  if (!$(this).hasClass("clicked")) {
    $(this).addClass("clicked");

    selected = Number($(this).attr("data-id"));
    if (luckyNumbers.indexOf(selected) > -1) {
      //code to put a key image     
      $(this).find(".back").append(winImg);
    } else {
      console.log("wrong: " + selected);
      //code to put not-winning image     
      $(this).find(".back").append(loseImg);
    }

  }

});



function getUniqueNumbers() {
  var arr = []
  while (arr.length < 3) {
    var someRand = Math.ceil(Math.random() * 36)
    if (arr.indexOf(someRand) > -1) continue;
    arr[arr.length] = someRand;
  }
  return arr;
}
img {
  width: 50px;
}
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta content="width=device-width" name="viewport">
  <title>JS Bin</title>
</head>

<body>
  <div class="game">


    <div class="card" data-id="5">
      <div class="inside">
        <div class="front">
          <img src="image/someimage.jpg" alt="keytowin">
        </div>
        <div class="back">
        </div>
      </div>
    </div>

    <div class="card" data-id="6">
      <div class="inside">
        <div class="front">
          <img src="image/someimage.jpg" alt="keytowin">
        </div>
        <div class="back">
        </div>
      </div>
    </div>


    <div class="card" data-id="7">
      <div class="inside">
        <div class="front">
          <img src="image/someimage.jpg" alt="keytowin">
        </div>
        <div class="back">
        </div>
      </div>
    </div>


  </div>
  <script src="https://code.jquery.com/jquery-2.2.4.js">
  </script>
</body>

</html>


-3
投票

[[电子邮件受保护]]当你恋爱和结婚时,有时我会因为不忠和不孕问题而几乎放弃离婚,直到我遇到了 Jaja 牧师,他在 7 天内解决了我的问题并找到了我的爱人回到我身上,自从我的伴侣我有了两个孩子。任何遇到我提到的类似问题的人都可以联系他获取信息。

© www.soinside.com 2019 - 2024. All rights reserved.