0

我正在查看一个带有 javascript 游戏的网站,我正在查看它如何保存高分。代码如下所示:

    (new Request({
        url: window.location.toString().split("#")[0],
        data: {
            action: "save_score",
            score: this.tenths,
            time_started: SERVER_TIME
        },
        onSuccess: HighScores.updateAndShow.bind(HighScores)
    })).send()

但是当我击败游戏并保存我的高分时,我查看 Chrome 开发者工具,请求看起来像这样

    Form Data
    action:save_score
    data:115-100-113-115-103-66-49-58-56-63-38-117-126-108-120-118-120-122-116-112-128-112-107-116-116-125-84-72-69-71-53-126-121-120-117-104-104-62-145-90-81-110-133-83-83-145-132-97-93-149-135-139-105-76-107-77-117-132-96-136-105-123-136-87-63-125-95-61-59-77-61-59-59-69-51-114-57-143-148-160-196-115-193-188-188-172-192-186-174-185-185-138-125-115-193-182-186-178-172-192-193-174-191-193-178-177-138-126-128-132-129-133-132-133-133-134-132

我无法弄清楚“score: this.tenths, time_started: SERVER_TIME”是如何转换为“data:115-...”的,我在 javascript 中找不到创建此字符串的任何地方。

这是一种标准的编码方式吗?这是浏览器自动转换的东西吗?这看起来像用破折号创建这个数字字符串的通用 ajax 库吗?您认为这是出于安全考虑,还是只需要发送所有这些号码,然后他们决定只用破折号分隔每个号码?Request 类是常见的东西还是他们编码的东西?

我将为我自己的游戏编写高分代码,并且我希望它能够以某种方式免受黑客攻击。

4

2 回答 2

1

这里可能发生任何事情。也许数字是字符代码?

如果您想保护您的游戏免受作弊者的侵害,您可以记录用户采取的所有操作并在服务器上重新创建游戏会话并在那里计算高分。但是当然你仍然会遇到使用机器人的人的问题。

于 2013-07-26T23:19:07.273 回答
1

我很确定该Request对象是该站点库中的自定义类,如果是这种情况,可能有自己的数据序列化算法设置为以特定方式传输数据。

于 2013-07-26T23:21:38.317 回答