2012-09-13 130 views
0

好吧,(對我來說)這是一個相當複雜的問題,這讓我的小白鼠大腦受到傷害。Android在應用程序購買安全

在我的遊戲中,有一系列特殊動作(組合)。我打算將其中大部分用於應用程序購買。此外,關閉廣告將成爲應用內購買。

有人向我建議玩家應該也可以通過擴展遊戲獲得連擊。也許在他可以花費的遊戲中賺取「積分」。

無論哪種方式,在我看來,存儲組合對玩家可用的唯一方法就是在「共享偏好」中存儲指標。

我的擔心是共享偏好對用戶干擾的脆弱程度。據我瞭解,「共享首選項」只是一個可供任何root用戶使用的.xml文件。如何阻止用戶訪問.xml並將數據更改爲「combo1 = true」或credits =「1,000,000」或「ads = off」?

在我寫這篇文章的時候,我意識到不用像「真」或「關」這樣明顯的詞,我可以使用用戶無法猜到的代碼。這是安全的嗎?

但是信用呢?如何存儲用戶無法猜測值何時可以變化的值。

我想我可以通過從遊戲代碼中的值和方程派生的代碼繼續處理值。所以在遊戲中有一個等式

code =((credits/2)* 10)+1)。

這意味着,如果信貸是1000然後存儲在sharedprefs值必須是50011000.因此除非用戶知道方程那麼他們將不能夠到.xml內輸入有效的值

這些想法是否有意義?他們會工作嗎?有沒有更好,更確定的方法來做到這一點?

對不起,這樣的菜鳥。

+0

您可以爲這些偏好設置加密數據,可能是結合當前用戶標識(Google或您自己的)來停止加密值的交換? – CodeChimp

回答

0

使用數字簽名或具有唯一校驗和算法的代碼必須驗證接受。

這改變了問題,以逆向工程程序發現密鑰或禁用檢查。

即使這不是真正安全的,但只是使它更難。

0

分享偏好來保存這樣的數據並不是一個好的選擇。如果用戶從設置中清除數據,那麼您應該有遠程服務來執行此操作,所有信用都將消失,甚至是他的購買歷史記錄。所以請使用遠程服務器來保存這些數據。