我如何确保只使用我的客户端客户端向我的服务器发出请求?

问题描述:

我正在写一个简单的在线多人游戏。它涉及发送一些http请求(我不介意使用任何其他protcool),以存储关于游戏的统计信息。我如何确保只使用我的客户端客户端向我的服务器发出请求?

问题是,游戏是P2P,然后统计数据发送到我的服务器,所以这使得它可以通过发送虚假统计作弊。我意识到它不可能免于欺骗客户,所以最好的办法是尽量减少发生这种情况的可能性。在服务器和客户端之间协商唯一的安全密钥以确保请求是真实的?

我知道,几乎所有的专有协议迟早都会被反向设计,但我想如果我稍微耗费时间来生成密钥,那么这个努力就不值得在愚蠢的游戏中作弊。

或者是否有更好的方法来做到这一点?

这一切都取决于统计类型。如果每个客户端都可以提交关于其他客户端的部分统计信息以及完整的统计信息,那么您可以编写一个服务器端验证机制来检测差异 - 这需要多个客户端的协调努力才能通过。

当你设计这样的机制,应该从骗子已经完全进入到客户端的源代码假设工作服务器 - 并仍然不能由单一的旁路机制骗子。如果由此产生的机制不可用(通常由于效率原因),您可以开始交易安全性以提高效率 - 但请注意您的交易是什么,以及作弊者能够使用哪些方法。尝试记录足够的数据,您可以通过非实时分析日志来检测此类作弊行为,在之后捕获作弊者事实上是接下来他接下来最好的事情的行为。

+0

虽然这种方法在* everyone *作弊时不起作用,但它仍然是一个有趣的想法。感谢启发! – Philip 2011-04-13 08:34:44