簡體   English   中英

SpriteKit級數據安全

[英]SpriteKit Level Data Security

我已經閱讀了許多有關存儲最佳數據的最佳實踐的文章,主題等,這些最佳數據用於存儲整個游戲應用程序中的水平數據(水平邊界數據,圖像,角色,時間等)。

  • 許多人建議使用Property List (.plist)是適當的,因為存儲游戲信息然后在需要時讀取它非常簡單。 盡管這很容易創建和引用,但除了簡單的AES加密字符串內容之外, plist文件也不是完全安全的
  • 另一種方法可能是將這些數據硬編碼到一個單獨的類文件中,該文件名為LevelData.m並直接引用該類以讀取級別數據,因為以這種方式存儲它應該是“安全的”,因為(據我所知iOS應用商店說,一旦打包並分發了應用程序,用戶對這些類文件的訪問權限將完全不受任何訪問。
  • 我還閱讀了使用SpriteKit內置於NSCoding中的信息,其中可以將數據存檔到文件(或NSData對象)中,然后再從該存檔中取消存檔。

我的問題是,有人可以建議最好的方法,還是我沒有提到的方法? 是的,我知道他們都是非常有效的方法來保存大數據,特別是不平凡的,甚至可能有些重復數據只需要被讀取,並且都有各自的優點和缺點在安全性措施方面。 我只是試圖找到最安全的方法來存儲這些數據,而用戶卻無法以其他任何方式篡改可能遇到類似問題並找到理想解決方案的其他人。

注意:我敢肯定,托管此數據服務器端並在應用程序啟動時檢索數據將是理想的安全方法。 但是,我只是想嚴格地通過將數據存儲在設備上來查看哪種方法應該是最佳的安全性實踐。 謝謝!

如果您不信任用戶,則如何對數據完整性進行簽名,您會不信任並使用公鑰加密(在二進制文件中帶有固定證書)來驗證簽名?

因此,只能使用帶有您有效簽名的數據。

但是,畢竟,如果用戶分解了您的二進制文件並修改了公鑰,那么它也不起作用。

與這些問題一樣,問題始終是:您要讓對手破壞您的安全性度量有多困難-有用的硬度是多少?

我知道您已經得到了答案,但是我個人將GameData Singleton類與NSCoding一起使用。 然后我將編碼/存檔的數據保存到iOS的Keychain中(而不是NSUserDefaults,NSBundlePath等)。

要保存到鑰匙串中,您可以使用此幫助器

https://github.com/jrendel/SwiftKeychainWrapper

這是我用於我的應用程序的那個 它的工作與NSUserDefaults非常相似,因此非常易於使用。

您還可以在此處獲得更復雜,功能更豐富的功能。

https://github.com/matthewpalmer/Locksmith

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM