2013-08-01 37 views
-1

在我的服务器客户端程序中,我想知道客户端是否是官方的(所以,未修改)。为此,我想实现版本检查,并且版本应该存储在数据文件或其他内容中。问题是,如何安全地存储它?我不希望它可以用任何文本阅读器阅读,并且如果有人会修改客户端,它仍然不能用于修改后的程序。如何将安全信息存储在数据文件中

我已经尝试了几件事情,例如使用Data In/Out StreamObject In/Out Stream,但它们在Notepad ++等程序中仍然可见,并且它们仍然可以被任何非真实版本的客户端使用。

有没有办法正确地做到这一点?

+0

你可能有更好的运气与[security.SE(http://security.stackexchange.com/)这个问题,但我建议你给你的代码的具体例子不管。 – asteri

回答

1

从这个意义上说,不要依赖“版本检查”。相反,使用带签名的jar包可以保证jar不会被修改并仍然运行,并且可以使用manifest文件中的签名字段与服务器进行通信,以确定客户端是否为授权版本。

http://docs.oracle.com/javase/tutorial/deployment/jar/signindex.html

+0

版本检查有什么问题? – Creator13

+0

这太容易被欺骗了。即使您的“VERSION.TXT”文件相同,签名也可以确保您的jar完全不会被篡改。此外,您可以使用由签名生成的加密哈希作为部署工件版本(并且我保证对于每个构建都会有所不同),以便轻松确定哪些客户端“被允许”,而不管“版本”通常是营销结构。 – PaulProgrammer

+0

您使用minecraft块作为您的头像,所以我会假设您熟悉minecraft mods如何将新类添加到jar中。使用jar签名,用户无法修改jar的内容并仍然运行该应用程序。用一个简单的“版本检查”,你可以。 – PaulProgrammer

相关问题