在我的 JavaScript 游戏(使用 jQuery 制作)中,我将玩家位置存储在数据库中。当 Angular 色移动时,我只是向特定的 URL,即 I.E. 发送请求。 mysite.com/map/x1/y3
(其中字符的位置为 x=1,y=3)。
该 url 将坐标发送到数据库并检查是否有其他玩家在我们附近。如果是,它还会发送带有该玩家名称和坐标的 JSON 对象。
这是我的问题 - 如何保护它?有些人可以查看我的 JavaScript 代码并准备类似于 mysite.com/map/x100/y234
的 url,它会将他“传送”到 map 的另一侧。
最佳答案
在浏览器中用 JavaScript 处理的任何数据/计算都是不安全的,因为所有代码都在本地机器上运行。我建议列出对公平游戏体验至关重要的所有参数,例如玩家位置、分数、资源……并在服务器端计算这些参数的管理。您只会从浏览器收集用户输入并将更新后的状态发送到浏览器以供显示。
即使您选择在浏览器端计算一些值以避免延迟,您也不应该将它们考虑到玩家共享的全局状态,并且您应该将本地状态与全局状态重新同步 - 始终在方向上全局到本地 - 不时。
与典型的表单处理一样,您还应该检查浏览器为用户输入发送的值是否在合理范围内,例如一秒内的相对移动小于一定距离。
关于javascript - javascript 游戏中的 ajax 安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2265991/