我正在制作更像“地铁冲浪”的HTML5游戏。想法是用户运行一段时间。通过一些障碍,我们根据这个得分。因此,如果用户已经过了5个障碍,他将获得20分。 24如果他通过6个障碍等等。在每次运行中,用户获得某些点,然后将其添加到他的总计中。因此,如果用户玩了5次,并且每次得分10,则总计将为50.游戏结束。我使用ajax在每次运行中更新分数。
我的代码相对简单
var score = window.user_score;
$.ajax({
url: window.baseURL,
data: {
score: score
},
method: "POST"
})
然后在我的PHP方面,我正在检查一些很多东西,比如用户打开游戏之间的时间和提交的分数是正确的(即它匹配得分)和其他一些检查,如令牌号是有效的,得分是不是负数,得分不大于5000(在那场比赛中没有人能得分5000)。但我仍然看到人们在我的API上运行机器人,通过计算所有内容来提交结果。我想要的是有一种方法可以通过客户端不可见的密钥加密我的分数,并且可以在我的服务器上解密。只有这样,用户才能将分数直接发送到我的服务器。我不太了解https所以如果我们可以使用它来隐藏客户端的密钥并加密分数和所有其他可能很好的信息。
答案 0 :(得分:0)
只要在客户端上计算得分并发送到服务器,攻击者就有可能调整得分值。你可以通过使用 security by obscurity 来加强它,这基本上意味着你尽可能地隐藏你的安全措施,因为它实际上不是安全。 / p>
在这篇文章中看看马特的答案: Safest way to update game score from client to server database? Javascript