我目前正在学习 C 中的基本网络,并且我对 Internet 的“晦涩”部分感兴趣:秘密协议。
假设我开发了一款多人在线游戏。我会设计自己的数据打包和解包协议,这样客户端和服务器都可以正确发送、接收和解析信息(例如:位置数据包、施法……等等)。当然,我不希望该协议出现在公共领域,因为任何想在我的服务器中制造“坏事”的人都可以做到。但我想保留我的项目免费软件。
那我该怎么办?你能告诉我如何让我假设的项目保持开源,而不会使其不安全吗?
提前致谢
我目前正在学习 C 中的基本网络,并且我对 Internet 的“晦涩”部分感兴趣:秘密协议。
假设我开发了一款多人在线游戏。我会设计自己的数据打包和解包协议,这样客户端和服务器都可以正确发送、接收和解析信息(例如:位置数据包、施法……等等)。当然,我不希望该协议出现在公共领域,因为任何想在我的服务器中制造“坏事”的人都可以做到。但我想保留我的项目免费软件。
那我该怎么办?你能告诉我如何让我假设的项目保持开源,而不会使其不安全吗?
提前致谢
不可能 - 如果您提供源代码,那么您也提供了协议的实现。你无法保护大门敞开的东西。相反,您专注于保护对服务器端内容的访问。
例如,您试图让人们不知道您的应用程序说英语,而您应该专注于通过他们的 ID 徽章过滤说英语的人。
您可以使用加密而不在开源中包含客户端密钥。但是,由于您必须将其包含在客户端中,因此很容易被黑客入侵。总是有可能破解您的服务器,但在许多情况下,您可以在服务器中保持控制和验证。例如,服务器可以跟踪您携带的多少金币,客户端可以告诉服务器为 X 枚金币购买新工具。服务器可以轻松验证交易并保留库存。移动也是如此:服务器知道客户端在哪里以及他们可以去哪里。尽管如此,这并不能阻止机器人。