Android
Безопасные общие ресурсы
Поиск…
Вступление
Общие предпочтения - это XML-файлы на основе ключа . Он находится под /data/data/package_name/shared_prefs/<filename.xml>
.
Таким образом, пользователь с привилегиями root может перейти к этому местоположению и может изменить его значения. Если вы хотите защитить значения в своих общих настройках, вы можете написать простой механизм шифрования и дешифрования.
Вы должны знать жесткий, что Shared Preferences никогда не были построены для обеспечения безопасности, это просто простой способ сохранить данные.
Синтаксис
- public static String encrypt (String input);
- public static String decrypt (String input);
параметры
параметр | Определение |
---|---|
вход | Значение строки для шифрования или дешифрования. |
замечания
Общие настройки никогда не были созданы для обеспечения безопасности, это просто простой способ сохранения данных.
Не рекомендуется использовать общие настройки для хранения важной информации, такой как учетные данные пользователя. Чтобы сохранить учетные данные пользователя (например, пароли), вам необходимо использовать другие методы, такие как AccountManager
Android.
Обеспечение совместного использования
Простой код
Здесь, чтобы проиллюстрировать принцип работы, мы можем использовать простое шифрование и дешифрование следующим образом.
public static String encrypt(String input) {
// Simple encryption, not very strong!
return Base64.encodeToString(input.getBytes(), Base64.DEFAULT);
}
public static String decrypt(String input) {
return new String(Base64.decode(input, Base64.DEFAULT));
}
Техника внедрения
public static String pref_name = "My_Shared_Pref";
// To Write
SharedPreferences preferences = getSharedPreferences(pref_name, MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(encrypt("password"), encrypt("my_dummy_pass"));
editor.apply(); // Or commit if targeting old devices
// To Read
SharedPreferences preferences = getSharedPreferences(pref_name, MODE_PRIVATE);
String passEncrypted = preferences.getString(encrypt("password"), encrypt("default_value"));
String password = decrypt(passEncrypted);