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