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

时间:2011-04-13 06:44:15

标签: java c++ c

我正在写一个简单的在线多人游戏。它涉及发送一些http请求(我不介意使用任何其他protcool)到我的服务器来存储有关游戏的统计数据。

问题是游戏是P2P,然后统计数据被发送到我的服务器,所以这可以通过发送虚假统计数据来欺骗。我意识到让它免于欺骗客户是不可能的,那么最小化发生这种情况的可能性的好方法是什么呢?协商服务器和客户端之间的唯一安全密钥以确保请求是真实的?

我知道几乎所有的专有协议迟早都是逆向工程的,但我认为如果我生成密钥需要花费一些时间,那么努力就不值得在愚蠢的游戏中作弊。

或者有更好的方法吗?

1 个答案:

答案 0 :(得分:4)

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

当你设计这样一种机制时,你应该假设骗子可以完全访问客户端服务器的源代码 - 然后建立一个仍然不能的机制。被一个骗子绕过。如果产生的机制不可用(通常由于效率),您可以开始交易安全性以提高效率 - 但要注意您的交易是什么,以及骗子能够使用哪些方法。尝试记录足够的数据,你可以通过对日志的非实时分析来检测这些作弊,在之后抓住一个骗子是接下来最好的事情 行为。