SharedPreferences и безопасность

Для разработки моего приложения для Android я изучаю SharedPreferences, чтобы сохранять данные о подключениях пользователей и иметь возможность восстанавливать каждый раз, когда приложение используется.

Но я не понимаю, как его использовать: есть ли у пользователя доступ к тому месту, где сохранены SharedPreferences? Может ли он изменить это?

В целях безопасности я должен:

  • сохранить идентификатор пользователя и пароль (не опасно ли хранить пароль ???) и пытаться подключать его каждый раз, когда я хочу что-то сделать (если приложение долгое время остается в фоновом режиме телефона) с помощью php $ _SESSION?

Или же

  • хранить только идентификатор и использовать его в качестве параметра, когда я хочу что-то сделать, например, $ id вместо $ _SESSION [‘id’], как если бы пользователь был подключен, но без переменных sesions?

Спасибо за ответы!

0

Решение

Имеет ли пользователь доступ к тому месту, где сохранены SharedPreferences? Может ли он изменить это?

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

0

Другие решения

Для сомнений по поводу 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"

Что касается безопасности, я бы рекомендовал хранить токен и использовать его при каждом общении. Этот токен должен иметь некоторое время жизни и должен быть восстановлен после него

0

Sharedpreferences — это текстовый файл, хранящийся на вашем телефоне.
Так что, если вы не управляете этим с умом, пользователь может видеть данные, хранящиеся в нем, и делать плохие вещи …
Я бы предложил зашифровать ваши sharedprefs.
ссылка: зашифровать данные в SharedPreferences

Также есть возможность сделать Global Singleton Class.
Вы можете сохранить токен & идентификатор в этом классе, пока приложение работает.
если пользователь закроет приложение. ему придется заново регистрироваться, потому что синглтон истек.

Надеюсь, что эта информация была несколько полезной

0
По вопросам рекламы [email protected]