gpt4 book ai didi

javascript - 将游戏分数从客户端更新到服务器数据库的最安全方法? Javascript

转载 作者:可可西里 更新时间:2023-11-01 01:53:43 25 4
gpt4 key购买 nike

所以我有这个完全在客户端运行的游戏。除了下载初始脚本来玩游戏之外,没有任何服务器交互。无论如何,在游戏结束时,我希望客户端将应该在服务器数据库中更新的分数发回给我。现在我已经开始接受这样一个事实,即在地球上我无法向黑客隐藏它并发送未更改的分数。但我想知道我可以修改整个过程到什么级别,黑客操纵正在发送的数据实际上变得非常不可行。我肯定不希望从客户端计算机以纯文本形式发送乐谱,也不希望我的服务器执行复杂的解密算法。什么是最好的方法来实现相当大的安全性,每个 tom dick 和 harry 都不会破解分数......我希望有人可以提供一个很好的小方法,我可以继续...... :) 谢谢

所以我的理想结果应该是 -> 信任来自不受信任方(玩家)的(分数)计算结果!

-编辑-

有人告诉我一些关于在图片获取请求中隐藏数据的事情。比如,我正在 Canvas (html5) 上实现这个游戏。所以他要求我在比赛结束时从我的服务器上获取一张比赛结束图像,他们要求应该包含散列得分。我不太了解完整的过程,但如果你能解释一下,我会很高兴! :)

coda^ so you can mask the requests nicely

shouvik how do I do it!?

coda^ you can compose the checksum you want to submit. like 12312312a12313a232 is your md5 which contains the score. bring in an asset into the canvas like

coda^ server.com/images/md5_hash_of_score/congratulations.png

coda^ which you can rewrite server side via htaccess

最佳答案

您似乎已经知道这一点,但只是强调一下; 你无法阻止某人这样做;你只能让它变得尽可能难!

假设您当前将分数提交为:

/submit_score.php?score=5

在 Firebug 中观看的人可以很容易地区分提交乐谱的位置,并对其进行更改。 submit_score.php 给出了它,参数名称也是如此。分数是一个容易区分的整数。

  1. 更改终点:/interaction.php?score=5
  2. 更改参数名称:/interaction.php?a=5

用户越来越难弄清楚发生了什么。

现在您可以让分数更难(再次强调,更难,并非不可能)改变。首先,您可以对其进行加密(显然您以后需要能够对其进行解密)。

  1. 对其进行 Base 64 编码。
  2. 数字 -> 字母(1=a、2=b 等)。
  3. 颠倒分数表示的顺序。

你说出来,你就做。所以你现在有 interaction.php?a=e

接下来您可以用其他东西对分数进行哈希处理。发送带有分数的哈希值,并在服务器上重新计算它。例如,md5() 带有随机字符串的分数,并在请求中发送分数(编码)、字符串和哈希值:

/interaction.php?a=e&str=abcde&hash=123456789abcefbc

当请求到达服务器时,执行:

if (md5($_GET['a'] . $_GET['str']) !== $_GET['hash']) exit;

显然,人们可以(相对)轻松地浏览您的 JavaScript 代码并查看发生了什么;所以让他们在那里更难。缩小和混淆代码。

如果你让某人觉得困难,他们会尝试理解你的 JavaScript,尝试使用 Firebug,但不理解发生了什么,也不会打扰;为了在游戏中获得一些额外积分。

关于javascript - 将游戏分数从客户端更新到服务器数据库的最安全方法? Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4733175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com