Для разработки моего приложения для Android я изучаю SharedPreferences, чтобы сохранять данные о подключениях пользователей и иметь возможность восстанавливать каждый раз, когда приложение используется.
Но я не понимаю, как его использовать: есть ли у пользователя доступ к тому месту, где сохранены SharedPreferences? Может ли он изменить это?
В целях безопасности я должен:
Или же
Спасибо за ответы!
Имеет ли пользователь доступ к тому месту, где сохранены SharedPreferences? Может ли он изменить это?
Общие настройки хранятся в каталоге вашего приложения, который находится во внутренней памяти. Пользователь не имеет доступа к этому каталогу только на некорневых устройствах, но он / она может получить к нему доступ, если устройство было рутировано.
Для сомнений по поводу SharedPreferences взгляните на Ссылка на Android
У меня была эта проблема некоторое время назад, и для этой цели я использовал класс Util.
Вы можете иметь что-то вроде этого
public class SharedPreferencesUtils {
private final static String PREF_TOKEN = "TOKEN";
private final static String PREF_NULL = "";
private static SharedPreferences getSharedPreferences(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context);
}
public static String getToken(Context context) {
return getSharedPreferences(context).getString(PREF_TOKEN, PREF_NULL);
}
public static void setToken(Context context, String token) {
SharedPreferences.Editor editor = getSharedPreferences(context).edit();
editor.putString(PREF_TOKEN, token);
editor.commit();
}
}
И использование так:
String token = "this is the token";
SharedPreferencesUtils.setToken(aContext,token);
...
String tokenRetrieved = SharedPreferencesUtils.getToken(aContext);
// tokenRetrieved now is "this is the token"
Что касается безопасности, я бы рекомендовал хранить токен и использовать его при каждом общении. Этот токен должен иметь некоторое время жизни и должен быть восстановлен после него
Sharedpreferences — это текстовый файл, хранящийся на вашем телефоне.
Так что, если вы не управляете этим с умом, пользователь может видеть данные, хранящиеся в нем, и делать плохие вещи …
Я бы предложил зашифровать ваши sharedprefs.
ссылка: зашифровать данные в SharedPreferences
Также есть возможность сделать Global Singleton Class.
Вы можете сохранить токен & идентификатор в этом классе, пока приложение работает.
если пользователь закроет приложение. ему придется заново регистрироваться, потому что синглтон истек.
Надеюсь, что эта информация была несколько полезной