我正在使用javascript开发一些html和css的游戏,我想知道是否有任何方法来保护这个游戏,这样用户就不能只打电话给game.php?result=victory来完成游戏并获得一些积分。
到目前为止,这是我的解决方案。
一个机会游戏的server-side.
但最后一个解决方案意味着,每次用户做任何事情时,我都必须发送操作。这可能适用于一个回合的战斗游戏,但我认为它将是慢任何其他类型的游戏。因此,我的问题是,是否有某种安全的方式,我可以准备我的javascript,以确保发送的信息。
发布于 2010-03-30 09:08:55
确保所有计算和验证安全的唯一方法发生在服务器端。几乎所有的网络游戏都是这样做的。客户端永远无法在在线通信中被信任,而且您必须始终确保在服务器端用户确实在做一些有效的事情。(在理论上,在实践中,您必须在一定程度上信任客户,因为延迟补偿和将一些非关键的东西卸载到客户端)。
因此,javascript并不是开发在线游戏的非常好的语言,因为每个动作都需要服务器进行处理和验证。对于其他编程语言来说,这不是一个很大的问题,因为您可以使用TCP/IP为服务器和客户端构建自己的通信协议。但是,对于javascript来说,不存在这样的可能性,因为您必须依赖于HTTP协议和XMLHTTPRequest处理程序,这会导致非常低效率的客户端服务器通信。
就像您说的,您可以始终使用javascript进行界面操作,但是为了安全起见,您仍然需要在服务器端执行大量的操作,这对于需要更多面向动作的控制的游戏来说肯定行不通。所以,如果你需要安全的话,你几乎只能使用基于旋转的游戏。
发布于 2010-03-30 08:53:24
您可以做一些事情来阻止天真的用户,但可能不是每个人。这完全取决于这个人如何“攻击”你的游戏。最后,用户可以使用javascript调试器来查看您的代码到底在做什么,并复制它。即使你把每一个游戏动作都发回来,用户仍然可以复制它。如果你不小心用户可以做什么动作,他们可能会发送回动作,如果他们是用默认的控制方案控制游戏是不可能的。
发布于 2010-03-30 08:54:26
不应该有胜利的网址。在游戏期间,客户端应该发送用户操作,如果他们赢了,服务器将他们重定向到胜利页面。
在胜利页面上,如果有的话,不应该进行任何计算/奖励。
https://stackoverflow.com/questions/2543881
复制相似问题