2015-09-09 101 views
1

我想將一個Android遊戲的分數保存到te parse.com後端。 所以我將創建一個的parseObject並將其保存在背景:解析保存遊戲高分安全

ParseObject gameScore = new ParseObject("GameScore"); 
gameScore.put("score", 1337); 
gameScore.put("playerName", "Sean Plott"); 
gameScore.saveInBackground(); 

現在有人可以逆轉engeener我的Android應用程序,得到了解析客戶端密鑰和應用程序ID和寫他想要的任何高分,爲他的用戶來說, parse.com後端? 或者Parse是否已經以某種方式阻止了這種情況?

Thx

+0

如何添加混淆器? –

+0

是的,這將是一種可能性,但也不是100%保存。我的問題是,如果我需要一些額外的安全性來將分數寫入分析,或者parse(api_key,client_key)的koncept是否「足夠節省」? – user630447

回答

2

是的,你需要額外的安全性,那些API密鑰可以被盜。

混淆是第一步,以防止某人逆向工程您的代碼。但是,像API密鑰的東西通常存儲爲String,因此它們不會被混淆。沒有真正完美的解決方案。無論你做什麼,專注於它的人都可以偷走它。但也有一些方法可以使這個過程更加困難

一些例子:

  • 使用NDK
  • 使用加密
  • 在png文件
  • 隱藏數據
  • 設置你的應用程序將沒有API密鑰的請求發送到代理服務器以接收請求,將API密鑰附加到請求的末尾,發送請求,然後接收請求的響應並將其返回給您的應用程序ion
  • 爲了讓您的公共密鑰免受惡意用戶和黑客的侵害,請勿將其作爲文字字符串嵌入到任何代碼中。相反,在運行時從零件構造字符串或使用位操作(例如,與其他字符串的XOR)來隱藏實際的鍵。密鑰本身並不是祕密信息,但您不希望讓黑客或惡意用戶輕易地用另一個密鑰替換公鑰。 http://developer.android.com/google/play/billing/billing_best_practices.html

主題的更多信息:

http://www.androidauthority.com/how-to-hide-your-api-key-in-android-600583/ http://www.informit.com/articles/article.aspx?p=2268753&seqNum=4

相關SO問題:

Best Practice for storing private API keys in Android

How to store a secret API key in an application's binary?

+0

Thx,您提到了代理服務器解決方案。但是每個人都可以將請求發送給代理併發出請求?採用這種解決方案,沒有比在應用中直接存儲密鑰更安全的方法嗎? – user630447