Pakiet | flash.data |
Klasa | public class EncryptedLocalStore |
Dziedziczenie | EncryptedLocalStore Object |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Dane ELS nie mogą być współdzielone między aplikacjami. Zadaniem magazynu ELS jest umożliwienie aplikacji przechowywania elementów, które można łatwo utworzyć ponownie, takich jak poświadczenia logowania i inne informacje prywatne. Dane ELS nie mają charakteru trwałego. Zobacz „Ograniczenia szyfrowanego magazynu lokalnego” i „Sprawdzone procedury korzystania z magazynu ELS” poniżej.
Obsługa profilów AIR: Ta funkcja nie jest obsługiwana na urządzeniach telewizyjnych ze środowiskiem AIR. W czasie wykonywania można sprawdzić, czy funkcja jest obsługiwana, odczytując właściwość EncryptedLocalStore.isSupported
. Więcej informacji o obsłudze elementów interfejsu API w różnych profilach można znaleźć w sekcji Obsługa profilów aplikacji AIR.
Środowisko AIR udostępnia szyfrowany magazyn lokalny (ELS, encrypted local store) dla każdej aplikacji AIR zainstalowanej na komputerze lub urządzeniu użytkownika. Magazyn taki umożliwia zapisywanie i pobieranie danych przechowywanych na lokalnym dysku twardym użytkownika w formacie zaszyfrowanym, którego inni użytkownicy nie są w stanie w prosty sposób rozszyfrować. Oddzielny szyfrowany magazyn lokalny jest stosowany dla każdej aplikacji AIR, a każda aplikacja AIR korzysta z odrębnego szyfrowanego magazynu danych dla każdego konta użytkownika na komputerze.
Szyfrowany magazyn lokalny jest przydatny do przechowywania informacji, które muszą być zabezpieczone, takie jak poświadczenia logowania dla usług Web Service. Szyfrowany magazyn lokalny nadaje się do przechowywania informacji, które nie powinny być ujawniane innym użytkownikom. Nie chroni on jednak danych przed innymi procesami działającymi w ramach tego samego konta użytkownika. Nie nadaje się zatem do ochrony tajnych danych aplikacji, takich jak informacje DRM lub klucze szyfrowania.
Do powiązania szyfrowanego magazynu lokalnego z każdą aplikacją i każdym użytkownikiem środowisko AIR używa interfejsu DPAPI w systemie Windows, KeyChain w systemach Mac OS i iOS oraz KeyRing lub KWallet w systemie Linux. Dane w szyfrowanym magazynie lokalnym są szyfrowane za pomocą algorytmu AES-CBC z kluczem 128-bitowym.
W systemie Android dane przechowywane w klasie EncryptedLocalStorage nie są szyfrowane. Zamiast tego dane są chronione za pomocą udostępnianego przez system operacyjny mechanizmu zabezpieczeń na poziomie użytkownika. System operacyjny Android przypisuje oddzielny identyfikator użytkownika do każdej aplikacji. Aplikacje mogą uzyskiwać dostęp tylko do plików własnych i utworzonych w lokalizacjach publicznych (takich jak wymienna karta pamięci). Na urządzeniach z systemem Android, które obsługują użytkownika root, aplikacje uruchomione z uprawnieniami tego użytkownika mogą uzyskiwać dostęp do plików innych aplikacji. Dlatego na takich urządzeniach zaszyfrowany magazyn lokalny nie oferuje tak wysokiego poziomu ochrony danych, jaki jest dostępny na urządzeniach bez użytkownika root.
Informacje o zaszyfrowanym magazynie lokalnym są dostępne tylko do treści aplikacji AIR w obszarze izolowanym bezpieczeństwa aplikacji.
W wypadku aktualizacji aplikacji AIR zaktualizowana wersja zachowuje dostęp do istniejących danych w szyfrowanym magazynie lokalnym, chyba że:
- Elementy dodawano do magazynu z parametrem
stronglyBound
ustawionym natrue
. - Przestrzeń nazw środowiska AIR 3.2 uaktualniono do wersji AIR 3.3. (Lokalizacja zaszyfrowanego magazynu lokalnego jest inna w środowisku AIR 3.2 i AIR 3.3 w systemach Mac OS i Windows).
- Zarówno dotychczasowa, jak i zaktualizowana wersja zostały opublikowane wcześniej niż wersja 1.5.3 środowiska AIR, a aktualizacja jest podpisana przy użyciu podpisu migracyjnego.
Ograniczenia szyfrowanego magazynu lokalnego
Dane w szyfrowanym magazynie lokalnym są chronione poświadczeniami konta użytkownika w systemie operacyjnym. Inne podmioty nie mogą uzyskać dostępu do danych w magazynie, chyba że mogą zalogować się jako odpowiedni użytkownik. Dane nie są jednak zabezpieczone przed dostępem innych aplikacji uruchomionych przez uwierzytelnionego użytkownika. Dlatego dane, które powinny być niejawne, takie jak klucze licencyjne czy klucze DRM, nie są zabezpieczone. Szyfrowany magazyn lokalny nie jest odpowiednim miejscem do przechowywania takich informacji. Jest on przeznaczony do przechowywania danych poufnych użytkownika, takich jak hasła.
Dane zapisane w szyfrowanym magazynie lokalnym mogą zostać z różnych przyczyn utracone. Na przykład użytkownik może odinstalować aplikację i usunąć zaszyfrowany plik. Ewentualnie, w wyniku aktualizacji, może ulec zmianie identyfikator wydawcy. Dlatego szyfrowany magazyn lokalny powinien być traktowany jako prywatna pamięć podręczna, a nie trwały magazyn danych.
Parametr stronglyBound
ma status przestarzałego i nie należy go ustawiać na true
. Ustawienie tego parametru na true
nie zapewnia żadnej dodatkowej ochrony danych. Spowoduje natomiast, że po każdej aktualizacji aplikacji nastąpi utrata dostępu do danych — nawet jeśli identyfikator wydawcy nie ulegnie zmianie.
Zaszyfrowany magazyn lokalny może działać wolniej, jeśli wielkość zapisanych danych przekracza 10 MB.
Odinstalowując aplikację AIR, dezinstalator nie usuwa danych przechowywanych w szyfrowanym magazynie lokalnym.
Sprawdzone procedury korzystania z magazynu ELS
Dobre praktyki przy korzystaniu z szyfrowanego magazynu lokalnego:
- Szyfrowanego magazynu lokalnego należy używać do przechowywania danych użytkownika objętych szczególną ochroną, np. haseł (ustawiając parametr
stronglyBound
nafalse
). - W szyfrowanym magazynie lokalnym nie należy przechowywać tajnych informacji aplikacji, takich jak klucze DRM lub tokeny licencyjne.
- Należy wyposażyć aplikację w mechanizm odtwarzania danych z szyfrowanego magazynu lokalnego, na wypadek gdyby doszło do ich utraty. Mechanizm ten może np. polegać na ponownym wyświetleniu monitu o wprowadzenie poświadczeń użytkownika.
- Nie należy używać parametru
stronglyBound
. - Jeśli parametr
stronglyBound
zostanie ustawiony natrue
, przy aktualizacji aplikacji nie należy przeprowadzać migracji elementów zapisanych w magazynie. Po aktualizacji należy odtworzyć dane. - W szyfrowanym magazynie lokalnym należy przechowywać dane o stosunkowo niewielkiej objętości. Do przechowywania dużych ilości danych należy użyć szyfrowanej bazy danych SQL środowiska AIR.
Elementy szyfrowanego magazynu lokalnego są identyfikowane za pomocą ciągów znaków. Wszystkie elementy są przechowywane jako dane w tablicy bajtów.
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
constructor : Object
Odwołanie do obiektu klasy lub funkcji konstruktora, dotyczące danej instancji obiektu. | Object | ||
isSupported : Boolean [statyczny] [tylko do odczytu]
Właściwość isSupported ma wartość true, jeśli na bieżącej platformie jest obsługiwana klasa EncryptedLocalStore; w przeciwnym razie ma wartość false. | EncryptedLocalStore |
Metoda | Zdefiniowane przez | ||
---|---|---|---|
[statyczny]
Dane odpowiadające określonej nazwie. | EncryptedLocalStore | ||
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | ||
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
[statyczny]
Usuwa element o określonej nazwie z szyfrowanego magazynu lokalnego. | EncryptedLocalStore | ||
[statyczny]
Czyści cały szyfrowany magazyn lokalny, usuwając wszystkie dane. | EncryptedLocalStore | ||
[statyczny]
Zapisuje obiekt ByteArray pod określoną nazwą. | EncryptedLocalStore | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | ||
Zwraca ciąg reprezentujący określony obiekt. | Object | ||
Zwraca pierwotną wartość dla określonego obiektu. | Object |
isSupported | właściwość |
isSupported:Boolean
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Właściwość isSupported
ma wartość true
, jeśli na bieżącej platformie jest obsługiwana klasa EncryptedLocalStore; w przeciwnym razie ma wartość false
.
Implementacja
public static function get isSupported():Boolean
getItem | () | metoda |
public static function getItem(name:String):ByteArray
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Dane odpowiadające określonej nazwie.
Jeśli element o określonej nazwie nie istnieje, metoda zwróci wartość null
.
Parametry
name:String — Nazwa elementu w szyfrowanym magazynie lokalnym.
|
ByteArray — Dane tablicy ByteArray. Jeśli brak danych elementu określonego parametrem name , metoda zwraca wartość null .
|
Zgłasza
ArgumentError — Wartość name jest równa null lub jest pustym ciągiem.
|
removeItem | () | metoda |
public static function removeItem(name:String):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Usuwa element o określonej nazwie z szyfrowanego magazynu lokalnego.
Parametry
name:String — Nazwa elementu w szyfrowanym magazynie lokalnym.
|
Zgłasza
ArgumentError — Wartość name jest równa null lub jest pustym ciągiem.
|
reset | () | metoda |
public static function reset():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Czyści cały szyfrowany magazyn lokalny, usuwając wszystkie dane.
setItem | () | metoda |
public static function setItem(name:String, data:ByteArray, stronglyBound:Boolean = false):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0 |
Zapisuje obiekt ByteArray pod określoną nazwą.
Parametry
name:String — Nazwa elementu w szyfrowanym magazynie lokalnym.
| |
data:ByteArray — Dane.
| |
stronglyBound:Boolean (default = false ) — (przestarzały) Parametr stronglyBound powinien być zawsze ustawiony na false (wartość domyślna). Jeśli ten parametr będzie ustawiony na true , po zmianie któregokolwiek z plików aplikacji odczytanie zapisanego elementu nie będzie możliwe. Jeśli na przykład użytkownik zainstaluje aktualizację aplikacji, zaktualizowana aplikacja nie będzie mogła odczytać ściśle powiązanych danych (stronglyBound=true), które zostały wcześniej zapisane w szyfrowanym magazynie lokalnym.
|
Zgłasza
ArgumentError — Wartość name jest równa null lub jest pustym ciągiem znaków.
| |
ArgumentError — Wartość data jest równa 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, 12:06 PM Z