2013-08-01 35 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

相關問題