【问题标题】:My games being hacked easily by right click inspect. How can i prevent this?我的游戏通过右键检查很容易被黑。我怎样才能防止这种情况?
【发布时间】:2017-05-07 15:15:18
【问题描述】:

我是一个新手游戏制作者,使用 JS、HTML 和 CSS 语言制作一些网页游戏。但问题是我无法阻止右键检查黑客的事情,所以有人用这种方法黑了我的游戏。

我的问题是,我怎样才能防止这种方法不被黑客入侵...

这是我的游戏http://ozansiar.com/mario/oyunok.php

这里是评分页面http://ozansiar.com/mario/skorekran.php 如您所见,它可以被黑客入侵...

语言是土耳其语,很抱歉没有用英语做这个,但我会的。

第二个问题是,我该如何改进我的游戏开发?我听说移相器是一个很好的引擎,所以我正在研究一些教程。但是,我也需要你的一些好的建议......

抱歉我的新手问题,但我确实需要一些好的建议来提高我的网络开发和游戏开发技能......非常感谢!

注意:游戏是我从 stackoverflow 社区学到的东西制作的......所以也非常感谢你。

【问题讨论】:

  • 你不能......
  • 好吧,那我能做些什么来避免这样的事情。例如,我应该怎么做才能避免右键单击检查并更改内容?我需要像 Phaser 这样的游戏引擎吗?
  • 不要相信客户端发送的任何东西,或者接受游戏可能被黑客入侵,或者将它们写入另一个平台(不是浏览器)。其他一切都只是缓解。
  • “有人用这种方法黑了我的游戏” 不,他们没有。禁用右键单击不会为您的应用增加任何安全性。
  • 您问题的第二部分是基于意见的,不适合 Stack Overflow。

标签: javascript php jquery html


【解决方案1】:

客户端代码(HTML、CSS、JavaScript)被称为“客户端”,因为它被下载到客户端并在那里执行。您绝对无法采取任何措施来保护此代码不让用户看到它并修改其本地副本。即使将您的 JavaScript 存储在外部文件中并链接到它也不能解决问题。混淆也是如此。

所有受保护的代码都应存在于安全服务器上,并在“服务器端”架构中执行,例如 .aspx、.PHP、.jsp 等。

【讨论】:

  • 如果我使用 Phaser 或其他游戏引擎,人们可以检查我的游戏吗?我应该将代码嵌入到 NodeJS 还是什么?
  • 这个答案是正确的,直接解决了这个问题(我的问题是,我怎样才能防止这种方法不被黑客入侵......)。它不应该被否决。
  • 正如我所说,您的代码需要在“服务器端”架构中执行。您使用哪一种取决于许多情况。没有单一的解决方案。
  • 那么,我是否需要在 PHP 的 echo 命令中编写所有代码?
  • 再说一次,我不能说您“需要”做的是 .php - 这只是众多服务器端选项之一。但是,是的,用户不能修改 .php 文件返回给客户端的内容。
【解决方案2】:

所以我只是浏览了游戏并“破解”了它。您遇到的问题是您使用表单和隐藏输入将游戏结果发送到服务器,首先当用户完成游戏时您提交他们花费的时间,然后在第二页上您将他们的最终分数发送到隐藏输入.用户可以在提交之前轻松修改这两者。

您可以做的是创建一个您不希望玩家修改的隐藏值的校验和。发布到服务器后,在PHP中使用这些值重新计算校验和,如果与浏览器提交的校验和不匹配,则不接受。

这不会阻止人们破解您的游戏,但会增加难度。如果他们绝对想伪造他们的分数,他们可以查找您用来在客户端生成校验和的 javascript 函数,并使用它来生成一个具有他们想要的值的新函数,因此它不是 100% 安全的。

至于最终得分,我建议您为此使用会话。您的skor.php 文件会生成一个表格,其中包含隐藏输入中的最终分数。为什么?只需将其转储到会话属性中,然后在skorislendi.php 中读回即可。这样,用户将无法对其进行编辑。

【讨论】:

  • 那么,如果我正确理解了您的评论,您是说在记录评分等时避免从客户端是一个坏主意吗?我没问题。但是我如何在我的游戏中运行服务器端我的怪物?这可能吗?使用inspect > modify 方法,我的怪物也可以被移除......我如何在服务器端运行我的内容?谢谢。
  • 我不确定你是如何从服务器运行怪物的。但是,我注意到如果我移除怪物,控制台就会出现错误。你可能会抓住那些,如果一个怪物的元素被删除,只需用 javascript 重新添加它。
  • 谢谢,我会看看你说了什么。至于运行怪物服务器端,我需要 Node JS 吗?我从 Node JS 知道的是,它是一种类似于服务器端语言的客户端?这是真的?那么,它可以在处理服务器部分的同时动画地运行怪物吗?这可能吗?谢谢。
  • Node.js 也是服务器端脚本,但使用的是 javascript 而不是 php。它非常擅长与客户端保持打开的 websocket,因此可以让服务器计算怪物的位置,并通过打开的套接字连接向客户端发送每个怪物的连续坐标流。您还可以将客户端的 mario 坐标发送回服务器,并让服务器决定 mario 何时死亡或游戏何时结束。但这将是对游戏代码的重大改写。
  • 是的,当我创建另一个游戏时,我猜我会使用 Node Js 方法...再次感谢您!所以我学到的是,我不能用 php 为我的怪物制作动画,所以我不能在没有 Node Js 的情况下从服务器端运行它是吗?
【解决方案3】:

您无法阻止客户端(即播放器)入侵客户端材料,即客户端脚本、HTML 等...您的脚本在客户端执行的任何合法操作都可能被伪造。充其量,您可以通过混淆您的 JS 代码和发布数据来缓解此类黑客攻击。这使破解变得更加困难,但并不能拯救你。

最后,问自己这个问题。安全性对我的游戏至关重要吗?如果是,那就担心它。否则,构建你能做的,从敏捷的角度,在NECESSARY时添加诸如安全性之类的特性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    相关资源
    最近更新 更多