可能重复:
为多人游戏获得良好的安全性
我用服务器和客户端制作了一个程序,它们使用套接字相互通信。我在此博客上读到,您永远无法完全隐藏 jar 文件的源代码。所以客户不能只是复制我的源代码并稍微调整一下。例如,我的程序说 level += 1; 他可以做到+= 10级;那么我的服务器程序是否可以查看客户端程序是否是我制作的?
可能重复:
为多人游戏获得良好的安全性
我用服务器和客户端制作了一个程序,它们使用套接字相互通信。我在此博客上读到,您永远无法完全隐藏 jar 文件的源代码。所以客户不能只是复制我的源代码并稍微调整一下。例如,我的程序说 level += 1; 他可以做到+= 10级;那么我的服务器程序是否可以查看客户端程序是否是我制作的?
您是对的。您的客户端 jar 可以被反编译和修改以将任何内容发送到您的服务器。
但我认为你没有抓住重点。您的服务器不知道访问它的客户端是谁(除非您使用客户端身份验证并且您仍然将安全部分委托给客户端程序的用户),因此您在与客户端交互时应始终进行防御性编程。例如,永远不要相信输入并始终验证它。在您的情况下,如果级别为 10,请验证它是否是可接受的输入
简单的解决方案:您可以覆盖客户端应用程序的类加载器并从 url/server 加载类。这样你的类文件就不需要在客户端了。