2014-01-30 1 views
0

Каковы плюсы и минусы хранения ключей приложения для вещей, таких как аутентификация апи в классе как статические переменныеандроид ключи хранения АФИ в выделенном классе против строк файла

public class Keys { 

    public static final int APP_KEY = 4848jffj48j89489; 

} 

против их хранения в файле строк

<string name="app_key">4848jffj48j89489</string> 

Я могу представить себе некоторые соображения памяти и преимущества их хранения в строках файла (только доступ к переменным при необходимости), но я не уверен, что оставляет ключи, доступные для просмотра, если APK был декомпилированы/извлечено

Точно так же я не уверен в всех последствиях использования статических переменных, я думаю, что они не будут обладать большой памятью, но я не уверен, что они могут быть собраны в мусор и возвращать нуль, или если ключи могут быть выставлен в APK, который был декомпилирован/извлечен

В любом случае, возможно, я пропустил некоторые другие вещи, поэтому любое понимание прокомментировано.

+1

ключи доступны для просмотра, когда apk декомпилируется независимо от метода, который вы используете. – njzk2

+0

@ njzk2 proguard поможет с этим, правда, правильно? – CQM

ответ

1

Рассмотрите возможность использования Android Keychain или KeyStore, если вы используете API 14 или новее. http://developer.android.com/reference/android/security/KeyChain.html http://developer.android.com/reference/java/security/KeyStore.html

+0

Я, я не понимаю явных преимуществ по сравнению с другими методами, вы можете уточнить? – CQM

+0

Если вы обеспокоены тем, что кто-то декомпилирует и получает доступ к вашим ключам API, тогда шифрование может быть оправдано. Я не использовал Android Keychain/KeyStore, но похоже, что он может работать для хранения ключей API с помощью SecretKeyEntry: http://developer.android.com/reference/java/security/KeyStore.SecretKeyEntry.html –

1

По моему опыту, два метода, о которых вы спрашиваете, работают более или менее одинаково. По моему мнению, статическую переменную немного легче получить. Сбор мусора не должен быть проблемой. В любом случае было бы тривиально, если бы кто-нибудь открыл ваш апк и достал ключ, хранящийся таким образом. Использование Android Keychain или Keystore, как было предложено, дает вам преимущество в том, что ваш ключ скрыт от всех, кроме самых решительных (ничто не является полностью безопасным, к сожалению) за счет некоторой сложности.

0

Строковый файл используется, если вам нужно перевести строку на несколько языков. В вашем случае кажется, что нет. Таким образом, статический путь лучше, так как у вас есть более легкий доступ к нему.

Смежные вопросы