2014-12-19 32 views
8

To z docs Apple:preferencje Zapisywanie gry i zapisane gry w bezpiecznym formacie

Podczas projektowania gry, która raportuje wyniki do Game Center, należy również rozważyć potrzeby bezpieczeństwa gry. Chcesz, aby ocena zgłoszona do Game Center była dokładną informacją o tym, jak gracze robią . Oto dwie sugestie:

Przechowuj preferencje gry i zapisane gry w bezpiecznym formacie, , zamiast w przejrzystym tekście. Jeśli dane twojej gry są zapisane w czytelnym tekście , gracz może pobrać zapisane dane gry za pomocą iTunes, zmodyfikować je i zmodyfikować je ponownie i ponownie zsynchronizować z urządzeniem. To może pozwolić graczowi uzyskać wyższy wynik niż zamierzałeś. Zawsze ustawiaj rozsądne minimalne i maksymalne wartości tabeli wyników.

Wiem, że dane mogą być przechowywane w pliku .plist lub .xml lub .json, nawet w bazie danych. Ale to wszystko to nieszyfrowany zwykły tekst. Co jest uważane za bezpieczny format? A jakie jeszcze metody/klasy/techniki mogą być używane do przechowywania poufnych danych?

Odpowiedz

7

Jeśli haker jest wystarczająco zdeterminowany i ma odpowiednie umiejętności, zazwyczaj przechowywane dane mogą zostać naruszone bez względu na metodę przechowywania. Sprowadza się to do rzeczywistych aplikacji aplikacji i czasu i wysiłku, które skłonni są wprowadzić w celu zapewnienia bezpieczeństwa danych. Poniżej znajduje się kilka opcji do rozważenia:

NSUserDefaults

Jednym z najczęstszych i najprostszych sposobów na przechowywanie danych. Dane nie są szyfrowane.

Save string to the NSUserDefaults?

PLIST Pliki

także częstym sposobem przechowywania danych. Dane nie są szyfrowane.

Storing and Retrieving from a Plist

CoreData

Tworzy model zarządzania relacji pomiędzy różnymi rodzajami obiektów. Domyślnie dane nie są szyfrowane.

http://www.appcoda.com/introduction-to-core-data/

http://www.raywenderlich.com/85578/first-core-data-app-using-swift

Brelok

Prawdopodobnie najbardziej bezpieczny sposób przechowywać dane w sposób wolny jailbroken urządzenia. Dane są szyfrowane.

https://stackoverflow.com/questions/16459879/how-to-store-a-string-in-keychain-ios

NSCoding

Jak Whirlwind zauważył, to jest jeszcze inna metoda magazynowania.

http://www.raywenderlich.com/1914/nscoding-tutorial-for-ios-how-to-save-your-app-data

http://nshipster.com/nscoding/

CommonCrypto Jabłko ramowa

niskopoziomowe C kodowania. Dane są szyfrowane.

https://developer.apple.com/library/ios/documentation/Security/Conceptual/cryptoservices/GeneralPurposeCrypto/GeneralPurposeCrypto.html

https://developer.apple.com/library/ios/samplecode/CryptoExercise/Listings/ReadMe_txt.html

Niestandardowy zbliża

przechowywania danych w chmurze a tym samym wyeliminowanie konieczności go na urządzenie całkowicie. Użyj funkcji identyfikatora dotyku, aby uwierzytelnić użytkownika i pobrać dane w chmurze.

https://developer.apple.com/library/ios/samplecode/KeychainTouchID/Introduction/Intro.html

+0

Możesz dodać komentarz, jeśli chcesz, dla tej metody (NSCoding), aby poprawić jakość odpowiedzi http://www.raywenderlich.com/1914/nscoding-tutorial-for-ios-how-to-save-your -app-data – Whirlwind

+1

@Whirlwind - Doskonały dodatek. Zawarłem to w odpowiedzi. – sangony

0

Najbezpieczniejsze miejsce do przechowywania danych to keychain, ale nadal nie jest w 100% bezpieczne, jeśli użytkownicy są na jailbreaku. Postępuj zgodnie z wytycznymi firmy Apple dotyczącymi ustawiania minimalnych i maksymalnych wartości tabeli wyników.

Here's another SO post opisujący, w jaki sposób można przechowywać informacje w postaci NSDictionary jako NSData, która jest następnie szyfrowana i odszyfrowywana przez aplikację.

+0

Hi huhitschris, dzięki za szybką odpowiedź. Nie chodzi tylko o najlepszy wynik i tabelę wyników. Dotyczy to wielu wartości, tj. Wirtualnych pieniędzy, ulepszeń odtwarzaczy itp. Dlatego określenie wartości minimalnej/maksymalnej nie jest odpowiednie. Przeczytam o metodzie NSData z szyfrowaniem i spróbuję zobaczyć wyniki. Czy możesz napisać kod do implementacji keychain, jeśli to nie jest problem? – Whirlwind

+1

Keychain jest tak samo bezpieczny jak twoje hasło, jailbreak lub nie. Korzystanie z dłuższego hasła jest sposobem na zwiększenie bezpieczeństwa. – zaph