2012-09-17 12 views
9

Potrzebuję przechowywać poufne informacje w aplikacji na Androida. Jeśli umieściłem go w pliku zasobów, wydaje się, że jest to trywialne, że inna aplikacja może przeglądać i czytać ten plik po prostu za pomocą PackageManager.getResourcesForApplication().Gdzie przechowywać poufne informacje globalne, takie jak klucze API w aplikacji na Androida?

Gdzie jest właściwe miejsce do umieszczania takich informacji, że nie chcemy, aby ludzie mogli łatwo snoopować?

Czy powinien znajdować się w skompilowanym pliku Java? Czy też pliki klas są również łatwe do odczytania? Ponadto, jeśli są one w plikach Java, czy można odwoływać się do nich z plików XML, które ich potrzebują (np. Dla klucza map Google google)?

+3

Wszystko, co rozpowszechniasz w swoim apk jest czytelne. Po prostu umieść go w plikach resources/java pod warunkiem, że jest to bezwartościowe narzędzie, takie jak klucze APi. Jeśli jest to numer Twojej karty kredytowej, nie umieszczaj go wcale. Klucz API api działa tylko w XML IIRC – zapl

+2

Na stronie ProGuard wymienia się [DexGuard] (http://www.saikoa.com/dexguard), który pozwala na lepsze zaciemnianie np. Ciągów Strings (kluczy API). Jeśli wyrzucenie pieniędzy nie jest problemem, sprawdzenie, co mają do zaoferowania, może być warte kłopotów. – harism

Odpowiedz

9

Twój plik APK zostanie pobrany z urządzenia i rozerwany. (W końcu niektóre urządzenia są zrootowane.) Bez względu na to, gdzie się tam znajdujesz, nie ważne gdzie, zostanie odnaleziony i wyodrębniony. Oczywiście, jeśli potencjalny zysk uzasadnia wysiłek. W przeciwnym razie, bezpieczeństwo przez zaciemnienie, takie jak zaciemnianie, może być drogą do zrobienia.

Obsługa prawdziwych sekretów powinna opierać się na pewnym rodzaju danych wejściowych, w szczególności na hasłach.

Na szczęście klucze API, jeśli są używane tak, jak powinny, niekoniecznie są prawdziwym sekretem.

-3

Jeśli chcesz tylko odmówić dostępu do swoich danych z innych aplikacji, możesz użyć SharedPreferences. Po prostu użyj Contex.getSharedPreferences (/ nazwa pliku prefs /, Context.MODE_PRIVATE); Zgodnie z dokumentacją MODE_PRIVATE oznacza, że ​​utworzony plik może być dostępny tylko przez aplikację wywołującą (lub wszystkie aplikacje dzielące ten sam identyfikator użytkownika).

+0

To nie odpowiada na zadawane pytanie. Pytający niepokoi się o zasoby rozproszone w aplikacji, a nie o przechowywanie informacji określonych po instalacji. Na przykład plik rozprowadzany w 'res/raw /'. – Dallas

4

Google ma kilka dobrych zaleceń na ten temat pod billing. Podsumowując: używaj zdalnego serwera, zaciemnij i korzystaj z bezpiecznych losowych dodatków. W apk nie ma nic, co zawsze można odwrócić, a zaciemnianie działa tylko w przypadku prostych ataków.

+2

W razie downwardowania proszę podać powód. Dzięki – Warpzit

Powiązane problemy