保护 Ajax 调用
Securing the Ajax Calls
我正在开发一款更像《地铁跑酷》的 HTML5 游戏。这个想法是用户 运行s 在一定时间内。通过一些障碍,他会根据此获得积分。因此,如果用户通过了 5 个障碍,他将获得 20 分。 24 如果他通过了 6 个障碍等等。在每个 运行 用户中获得一定的积分,然后将这些积分添加到他的总计中。因此,如果用户玩了 5 次,每次他得 10 分,总分将是 50。游戏完成。我正在使用 ajax 来更新每个 运行 中的分数。
我的代码比较简单
var score = window.user_score;
$.ajax({
url: window.baseURL,
data: {
score: score
},
method: "POST"
})
然后在我的PHP这边,我正在检查很多事情,比如用户打开游戏和提交分数之间的时间是否正确(即它与分数匹配)和其他一些检查,比如令牌number 有效,score 不为负数,score 不大于 5000(那场比赛没有人能得分 5000)。但我仍然看到有人 运行ning 机器人在我的 API 上通过计算所有内容来提交结果。我想要的是有一种方法可以通过一些客户端不可见但可以在我的服务器上解密的密钥来加密我的分数。只有这样用户才能将分数直接发送到我的服务器。我对 https 了解不多,所以如果我们可以使用它来对客户端隐藏密钥并加密乐谱和所有其他信息,那就太好了。
只要在客户端计算分数并发送到服务器,攻击者就有可能调整分数值。您可以通过使用 security by obscurity 来使其变得更难,这基本上意味着您尝试尽可能地隐藏您的安全措施,因为它实际上 不是 安全。
看看马特在这个post中的回答:
Safest way to update game score from client to server database? Javascript
我正在开发一款更像《地铁跑酷》的 HTML5 游戏。这个想法是用户 运行s 在一定时间内。通过一些障碍,他会根据此获得积分。因此,如果用户通过了 5 个障碍,他将获得 20 分。 24 如果他通过了 6 个障碍等等。在每个 运行 用户中获得一定的积分,然后将这些积分添加到他的总计中。因此,如果用户玩了 5 次,每次他得 10 分,总分将是 50。游戏完成。我正在使用 ajax 来更新每个 运行 中的分数。
我的代码比较简单
var score = window.user_score;
$.ajax({
url: window.baseURL,
data: {
score: score
},
method: "POST"
})
然后在我的PHP这边,我正在检查很多事情,比如用户打开游戏和提交分数之间的时间是否正确(即它与分数匹配)和其他一些检查,比如令牌number 有效,score 不为负数,score 不大于 5000(那场比赛没有人能得分 5000)。但我仍然看到有人 运行ning 机器人在我的 API 上通过计算所有内容来提交结果。我想要的是有一种方法可以通过一些客户端不可见但可以在我的服务器上解密的密钥来加密我的分数。只有这样用户才能将分数直接发送到我的服务器。我对 https 了解不多,所以如果我们可以使用它来对客户端隐藏密钥并加密乐谱和所有其他信息,那就太好了。
只要在客户端计算分数并发送到服务器,攻击者就有可能调整分数值。您可以通过使用 security by obscurity 来使其变得更难,这基本上意味着您尝试尽可能地隐藏您的安全措施,因为它实际上 不是 安全。
看看马特在这个post中的回答: Safest way to update game score from client to server database? Javascript