想象一下,我有一個遊戲,我需要爲每個用戶保存數據,比如關卡,高分,金牌......
如果我在本地保存了一些(在用戶的設備上)他們不是很安全,並且可以由擁有紮根設備和一定技能的用戶進行修改。 (如討論here)保護數據庫免受根植設備
所以我需要把它們放在我的服務器上的數據庫 - 我用它連接到一個web服務和JSON。
但是後來我意識到這並不安全:如果有人可以獲得我的APK,他可以反編譯它,獲取用於發佈高分的代碼,並且編輯它總是發佈1,234,567(並再次編譯它)或者只是提取它併發布任何高分。
在高分的情況下,這不是一個大問題 - 但有了這個,基本上可以獲取/發佈應用中使用的任何東西。
如何保護我的應用程序/數據庫免受此影響?
我的想法:
- 加密的一切,我張貼:不可阻擋的工作,作爲加密發生在 設備
- 加密的一切,我用後從DB種子:由於「黑客」可以得到種子藏漢,沒有任何安全
- 生成每個連接的關鍵:同第一
用一句話: 只要「黑客」可以反映我的應用程序的行爲,是否有任何方法確保與我的數據庫的連接實際上是由我的應用程序打開而不是其他人?
我認爲如果你將它們存儲在'SharedPreferences'中,它將是可見的,並且可能只能從你的應用程序訪問。 – g00dy
1)afaik它可以在根植設備上訪問2)我需要在網上至少存儲一些數據(如高分 - 它是全球高分榜) –
是的 - 你說得對,可以從一個植根於設備 - 這對你沒有用處。所以,分數數據等應該放在你的服務器上,並且每次訪問時都要訪問。 .apk文件的反編譯並不總是會給你整個代碼。我已閱讀過這篇文章,但不能保證可以獲得整個代碼。即便如此,如果數據在您的服務器上使用密碼進行保護,那麼如果沒有它,將很難獲得。 – g00dy