Пакет | flash.data |
Класс | public class EncryptedLocalStore |
Наследование | EncryptedLocalStore Object |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
К данным ELS нельзя получить доступ из других приложений. Смысл класса ELS в том, чтобы позволить приложениям хранить легко восстанавливаемые элементы, в частности, имена и пароли учетных записей и другую конфиденциальную информацию. Данные ELS нельзя считать постоянными; см. ниже разделы «Ограничения локального зашифрованного хранилища» и «Рекомендации по оптимальному использованию ELS».
Поддержка в профилях AIR: эта функция не поддерживается на устройствах AIR for TV. Используйте свойство EncryptedLocalStore.isSupported
, чтобы проверить наличие поддержки в среде выполнения. Дополнительные сведения о поддержке API-интерфейса в разных профилях см. в разделе «Поддержка в профилях AIR».
Среда выполнения AIR предоставляет локальное зашифрованное хранилище для каждого приложения AIR, установленного на компьютере или устройстве пользователя. Это позволяет сохранять и извлекать данные, хранимые на жестком диске пользователя в зашифрованном виде, при этом другие пользователи не смогут расшифровать эти данные обычными методами. Отдельное зашифрованное локальное хранилище используется для каждого приложения AIR, а каждое приложение AIR использует такое хранилище для каждой учетной записи пользователя на компьютере.
Используйте локальное зашифрованное хранилище для конфиденциальной информации, такой как имена учетных записей и пароли для веб-служб. Локальное зашифрованное хранилище подходит для информации, которая должна быть защищена от других пользователей. Однако оно не позволяет защитить данные от других процессов, выполняемых в той же учетной записи пользователя. Поэтому локальное зашифрованное хранилище не подходит для защиты секретных данных приложения, таких как ключи шифрования или DRM.
Для установки связи зашифрованного локального хранилища с каждым приложением и пользователем среда AIR использует интерфейс DPAPI в Windows, KeyChain в Mac OS и iOS и KeyRing или KWallet в Linux. В зашифрованном локальном хранилище используется 128-разрядное шифрование AES-CBC.
В ОС Android данные, сохраняемые классом EncryptedLocalStorage, не шифруются. Вместо этого защита данных обеспечивается на уровне пользователя системой безопасности ОС. ОС Android присваивает каждому приложению индивидуальный идентификатор пользователя. Приложения имеют доступ только к собственным файлам и файлам, созданным в общедоступных папках, таких как съемная карта памяти). Обратите внимание, что на взломанных устройствах Android приложения, выполняемые с правами суперпользователя, могут получать доступ к файлам других приложений. Таким образом, на взломанных устройствах зашифрованное локальное хранилище не обеспечивает такого высокого уровня защиты данных, как на невзломанных.
Информация в зашифрованном хранилище доступна только приложениям AIR в своей изолированной программной среде.
В случае обновления приложения AIR, обновленная версия сохраняет доступ ко всем существующим данным в локальном зашифрованном хранилище, за исключением следующих случаев:
- элементы добавлены с использованием параметра
stronglyBound
в значенииtrue
; - пространство имен AIR 3.2 обновлено до AIR 3.3 (физическое расположение локального зашифрованного хранилища изменилось с AIR 3.2 на AIR 3.3 в ОС Mac OS и Windows);
- и существующее и новые версии опубликованы до AIR 1.5.3, а обновление подписано с помощью подписи миграции.
Ограничения локального зашифрованного хранилища
Данные в локальном зашифрованном хранилище защищаются с использованием учетных данных пользователя операционной системы. Никто другой не сможет получить доступ к данным в хранилище, не имея учетных данных этого пользователя. Однако данные не защищены от доступа со стороны приложений, запущенных активным пользователем. Таким образом, данные приложения, которые желательно сохранить в тайне от пользователей (например, ключи лицензирования или DRM), оказываются незащищенными. Локальное зашифрованное хранилище данных не подходит для такой информации. В нем можно хранить только личные данные пользователя, например пароли.
Данные в локальном зашифрованном хранилище могут быть потеряны по многим причинам. Например, пользователь может удалить приложение и зашифрованный файл. Кроме того, в результате обновления может измениться идентификатор издателя. Поэтому локальное зашифрованное хранилище следует рассматривать как личный кэш, а не как постоянное хранилище данных.
Параметр stronglyBound
уже не используется, поэтому ему не следует задавать значение true
. Значение true
не обеспечивает дополнительной защиты данных. В то же время доступ к данным прекращается при каждом обновлении приложения, даже если идентификатор издателя остается прежним.
Если размер сохраняемых данных превышает 10 МБ, работа зашифрованного локального хранилища может быть замедлена.
При удалении приложения AIR программа удаления не удаляет данные из зашифрованного локального хранилища.
Рекомендации по оптимальному использованию ELS
Ниже приводятся рекомендации по использованию локального зашифрованного хранилища.
- Используйте локальное зашифрованное хранилище для конфиденциальных данных пользователя, таких как пароли (параметру
stronglyBound
следует задать значениеfalse
). - Не используйте локальное зашифрованное хранилище для закрытых данных приложения, таких как ключи лицензирования и DRM.
- В приложении необходимо предусмотреть возможность воссоздания данных локального зашифрованного хранилища на случай их потери. Например, при необходимости можно повторно запрашивать данные для входа в учетную запись пользователя.
- Не используйте параметр
stronglyBound
. - Если же параметру
stronglyBound
задается значениеtrue
, не перемещайте сохраненные элементы во время обновления. Вместо этого следует воссоздавать данные после обновления. - Храните только относительно небольшие объемы данных. Для больших объемов данных, используйте базу данных SQL для AIR с шифрованием.
Идентификатором элементов зашифрованного локального приложения является строка. Все элементы хранятся в виде массива байтов.
Свойство | Определено | ||
---|---|---|---|
constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | ||
isSupported : Boolean [статические] [только для чтения]
Свойству isSupported задается значение true, если текущая платформа поддерживает класс EncryptedLocalStore, в противном случае задается значение false. | EncryptedLocalStore |
Метод | Определено | ||
---|---|---|---|
[статические]
Данные, соответствующие указанному имени. | EncryptedLocalStore | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
[статические]
Удаляет элемент с заданным именем из зашифрованного локального хранилища. | EncryptedLocalStore | ||
[статические]
Очищает все зашифрованное локальное хранилище, удаляя все данные. | EncryptedLocalStore | ||
[статические]
Хранит объект ByteArray под указанным именем. | EncryptedLocalStore | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строковое представление заданного объекта. | Object | ||
Возвращает элементарное значение заданного объекта. | Object |
isSupported | свойство |
isSupported:Boolean
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 2 |
Свойству isSupported
задается значение true
, если текущая платформа поддерживает класс EncryptedLocalStore, в противном случае задается значение false
.
Реализация
public static function get isSupported():Boolean
getItem | () | метод |
public static function getItem(name:String):ByteArray
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Данные, соответствующие указанному имени.
Если элемент с заданным именем отсутствует, метод возвращает null
.
Параметры
name:String — Имя элемента в зашифрованном локальном хранилище.
|
ByteArray — Данные ByteArray. Если элемент с заданным свойством name не содержит данных, метод возвращает null .
|
Выдает
ArgumentError — Аргумент name имеет значение null или представляет собой пустую строку.
|
removeItem | () | метод |
public static function removeItem(name:String):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Удаляет элемент с заданным именем из зашифрованного локального хранилища.
Параметры
name:String — Имя элемента в зашифрованном локальном хранилище.
|
Выдает
ArgumentError — Аргумент name имеет значение null или представляет собой пустую строку.
|
reset | () | метод |
public static function reset():void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Очищает все зашифрованное локальное хранилище, удаляя все данные.
setItem | () | метод |
public static function setItem(name:String, data:ByteArray, stronglyBound:Boolean = false):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Хранит объект ByteArray под указанным именем.
Параметры
name:String — Имя элемента в зашифрованном локальном хранилище.
| |
data:ByteArray — Данные.
| |
stronglyBound:Boolean (default = false ) — (Устарело) Параметру stronglyBound следует задать значениеfalse (используемое по умолчанию). Если задано значение true , сохраненный элемент нельзя получить из измененных файлов приложения. Например, если пользователь устанавливает обновление, то приложение больше не может считывать тесно связанные данные, которые ранее были записаны в локальном зашифрованном хранилище данных.
|
Выдает
ArgumentError — Аргумент name имеет значение null или представляет собой пустую строку.
| |
ArgumentError — Значение data равно null .
|
var str:String = "Bob"; var bytes:ByteArray = new ByteArray(); bytes.writeUTFBytes(str); EncryptedLocalStore.setItem("firstName", bytes); var storedValue:ByteArray = EncryptedLocalStore.getItem("firstName"); trace(storedValue.readUTFBytes(storedValue.length)); // "Bob" EncryptedLocalStore.removeItem("firstName");
Tue Jun 12 2018, 11:34 AM Z