2011-08-27 16 views
0

所以我創建一個JApplet遊戲,並且我將用戶信息保存到APPDATA中的.txt文件中。有沒有更安全的方式來保存他們的信息,這將不會讓他們編輯它作弊?JApplet書寫安全嗎?

+9

將它保存到你自己的服務器?任何你保存到客戶機器上的東西都可以由客戶編輯,這是生活中的事實。 – Amber

+0

你會推薦我做什麼類型的服務器?有沒有像一個網站提供,或者我應該自己做? – Notchos

+0

https://appengine.google.com/ – Zecas

回答

2

基本上,防止作弊的唯一方法是讓你控制下的服務器計算分數,否則強制執行遊戲規則。如果您正在編寫點對點遊戲,可能會有一些協議允許用戶確定另一個玩家是否在不涉及您的情況下作弊。 ACM sigecom定期發佈有關此類協議的研究。但是,由於applet安全模型的限制,用戶需要授予applet特殊權限,以便直接與其他用戶交談。

說到這一點,我建議不要將用戶的信息保存爲.txt文件。 %APPDATA%是僅限於Windows的,因此打破了「一次寫入運行」的說法。並且默認的小應用程序沙盒不允許讀取或寫入本地文件,因此您必須簽署該小程序並說服用戶確信它足夠特殊才能獲得這種提升的特權。

但是,你有小應用程序/服務器通信的幾個選項:

  • REST調用使用java.net.URL
  • SOAP調用(這是你的幾個庫)
  • RMI(僅當服務器在Java中寫的)
  • 自己的自定義協議通過TCP

小程序無法讀取d直接寫cookie,但JavaScript可以,JavaScript可以調用applet上的方法。將信息從服務器傳遞到小應用程序的最後一種方法是通過PARAM標記。你甚至可以傳遞由服務器的私鑰簽名的初始遊戲狀態數據和在PARAM標籤中編碼的base64;這將阻止任何人對其進行「編輯」,儘管我不能想出任何方法來完全防止作弊行爲,如果關於遊戲狀態的某些內容應該隱藏在玩家身上,但在小程序代碼中已知。