Paquete | flash.data |
Clase | public class EncryptedLocalStore |
Herencia | EncryptedLocalStore Object |
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Los datos de ELS no se pueden compartir entre aplicaciones. La finalidad de ELS es permitir que una aplicación pueda almacenar elementos que se facilitan frecuentemente, como las credenciales de inicio de sesión y otra información privada. Los datos de ELS no debe considerarse como permanentes; consulte la sección “Limitaciones del almacén local cifrado” y “Prácticas recomendadas para el uso de ELS”. a continuación.
Compatibilidad con perfil de AIR: esta característica no se admite en dispositivos AIR para TV. Puede comprobar la compatibilidad en tiempo de ejecución mediante la propiedad EncryptedLocalStore.isSupported
. Consulte Compatibilidad con perfil de AIR para obtener información sobre la compatibilidad de la API con varios perfiles.
AIR proporciona un almacén local cifrado (ELS) para cada aplicación de AIR instalada en el equipo o dispositivo del usuario. Esto permite que usted pueda guardar y recuperar datos guardados en el disco duro local del usuario en un formato cifrado que no puedan descifrar fácilmente otros usuarios. Se utiliza un almacén local cifrado e independiente para cada aplicación de AIR, y cada aplicación de AIR usa un almacén local cifrado e independiente para cada cuenta de usuario del equipo.
Utilice el almacén local cifrado para guardar información que debe estar protegida, como los datos de inicio de sesión para servicios web. EL ELS está indicado para almacenar información que deba permanecer privada para otros usuarios. Sin embargo, no protege los datos de otros procesos ejecutados en la misma cuenta de usuario. Por esto, no está indicado para proteger datos secretos de aplicaciones, como DRM o claves de cifrado.
AIR utiliza DPAPI en Windows, KeyChain en Mac OS e iOS, y KeyRing o KWallet en Linux para asociar el almacén local cifrado a todas las aplicaciones y usuarios. El almacén local cifrado utiliza codificación AES-CBC de 128 bits.
En Android, los datos guardados con la clase EncryptedLocalStorage no están cifrados. En su lugar, los datos se protegen con la seguridad de usuario proporcionada por el sistema operativo. El sistema operativo Android asigna a cada aplicación un ID de usuario distinto. Las aplicaciones solo pueden acceder a sus propios archivos y a archivos creados en ubicaciones públicas (por ejemplo, una tarjeta de memoria extraíble). Tenga en cuenta que, en dispositivos Android raíz, las aplicaciones que se ejecutan con privilegios de raíz pueden acceder a archivos de otras aplicaciones. Así, en un dispositivo raíz, el almacenamiento local cifrado no proporciona un alto nivel de protección como sí lo hace en un dispositivo sin raíz.
La información del almacén local cifrado únicamente está disponible para el contenido de la aplicación de AIR del entorno limitado de seguridad de la aplicación.
Si actualiza una aplicación de AIR, la versión actualizada conserva el acceso a todos los datos existentes en el almacén local cifrado a no ser que:
- Los elementos se hayan añadido con el parámetro
stronglyBound
establecido entrue
- Ha actualizado desde el espacio de nombres de AIR 3.2 a AIR 3.3 (la ubicación física del almacén local cifrado cambia entre AIR 3.2 y AIR 3.3 tanto en Mac OS como en Windows)
- La versión existente y la actualizada se publican en versiones anteriores a AIR 1.5.3 y la actualización está firmada con una firma de migración
Limitaciones del almacén local cifrado
Los datos del almacén local cifrado se protegen con las credenciales de la cuenta en el sistema operativo del usuario. Otras entidades no pueden acceder a los datos del almacén a menos que puedan iniciar la sesión como usuario. Sin embargo, los datos no están seguros frente al acceso de otras aplicaciones ejecutadas por un usuario autenticado. Así, la información que la aplicación pueda desear mantener en secreto para los usuarios, como las claves utilizadas para la administración de derechos digitales o de licencia, no está segura. El almacén local cifrado no es la ubicación adecuada para almacenar este tipo de información. Sólo resulta un lugar apropiado para almacenar datos privados del usuario como, por ejemplo, contraseñas.
Los datos del ELS se pueden perder por muchos motivos. Por ejemplo, el usuario puede desinstalar la aplicación y eliminar el archivo cifrado. O el ID del editor podría cambiarse como resultado de la actualización. Por ello, el ELS debe tratarse como una memoria caché privada, no como espacio de almacenamiento de datos permanente.
El parámetro stronglyBound
ya no se utiliza y no debe establecerse en true
. Establecer el parámetro como true
no aporta protección adicional a los datos. Al mismo tiempo, se pierde el acceso a los datos cada vez que se actualiza la aplicación, incluso si el ID del editor permanece invariable.
El almacenamiento local cifrado puede realizarse más lentamente si los datos superan los 10 MB.
Al desinstalar una aplicación de AIR, el programa de desinstalación no elimina los datos guardados en el almacén local cifrado.
Prácticas recomendadas para el uso de ELS
Entre las mejores prácticas para el uso del almacén local cifrado (ELS) se incluyen:
- Utilice el ELS para almacenar datos importantes del usuario como, por ejemplo, contraseñas (estableciendo
stronglyBound
enfalse
) - No utilice el ELS para almacenar secretos de las aplicaciones como, por ejemplo, claves de DRM (administración de derechos digitales) o tokens de licencia.
- Permite que la aplicación pueda recrear los datos almacenados en el ELS si éstos se pierden. Por ejemplo, puede pedir al usuario que vuelva a introducir sus credenciales de cuenta de usuario cuando sea necesario.
- No utilice el parámetro
stronglyBound
. - Si establece
stronglyBound
comotrue
, no migre los elementos almacenados durante una actualización. Vuelva a crear los datos una vez concluida la actualización. - Almacene únicamente cantidades relativamente pequeñas de datos. Para grandes cantidades de datos, utilice una base de datos SQL de AIR con la codificación.
Los elementos del almacén local cifrado se identifican con una cadena. Todos los elementos se almacenan como datos de conjunto de bytes.
Propiedad | Definido por | ||
---|---|---|---|
constructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada. | Object | ||
isSupported : Boolean [estática] [solo lectura]
La propiedad isSupported se establece en true si la clase EncryptedLocalStore se admite en la plataforma actual; en caso contrario, se establece en false. | EncryptedLocalStore |
Método | Definido por | ||
---|---|---|---|
[estática]
Los datos correspondientes al nombre especificado. | EncryptedLocalStore | ||
Indica si un objeto tiene definida una propiedad especificada. | Object | ||
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro. | Object | ||
Indica si existe la propiedad especificada y si es enumerable. | Object | ||
[estática]
Elimina el elemento del nombre especificado del almacén local cifrado. | EncryptedLocalStore | ||
[estática]
Borra todo el almacén local cifrado; se eliminan todos los datos. | EncryptedLocalStore | ||
[estática]
Almacena un objeto ByteArray bajo el nombre especificado. | EncryptedLocalStore | ||
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle. | Object | ||
Devuelve la representación de cadena de este objeto, con formato según las convenciones específicas de configuración regional. | Object | ||
Devuelve la representación de cadena del objeto especificado. | Object | ||
Devuelve el valor simple del objeto especificado. | Object |
isSupported | propiedad |
isSupported:Boolean
[solo lectura] Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 2 |
La propiedad isSupported
se establece en true
si la clase EncryptedLocalStore se admite en la plataforma actual; en caso contrario, se establece en false
.
Implementación
public static function get isSupported():Boolean
getItem | () | método |
public static function getItem(name:String):ByteArray
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Los datos correspondientes al nombre especificado.
Si no existe el nombre especificado para un elemento, el método devuelve null
.
Parámetros
name:String — Nombre del elemento del almacén local cifrado.
|
ByteArray — Datos de ByteArray. Si no existen datos para el nombre facilitado, el método devuelve null .
|
Emite
ArgumentError — El valor name es null o una cadena vacía.
|
removeItem | () | método |
public static function removeItem(name:String):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Elimina el elemento del nombre especificado del almacén local cifrado.
Parámetros
name:String — Nombre del elemento del almacén local cifrado.
|
Emite
ArgumentError — El valor name es null o una cadena vacía.
|
reset | () | método |
public static function reset():void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Borra todo el almacén local cifrado; se eliminan todos los datos.
setItem | () | método |
public static function setItem(name:String, data:ByteArray, stronglyBound:Boolean = false):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0 |
Almacena un objeto ByteArray bajo el nombre especificado.
Parámetros
name:String — Nombre del elemento del almacén local cifrado.
| |
data:ByteArray — Datos.
| |
stronglyBound:Boolean (default = false ) — (desfasada) El parámetro stronglyBound deberá estar definido como false (el valor predeterminado). Si se establece en true , el elemento guardado no se puede recuperar si los archivos de la aplicación se modifican. Por ejemplo, si un usuario instala una actualización de la aplicación, la aplicación actualizada no puede leer los datos fuertemente vinculados previamente escritos en el almacén local cifrado.
|
Emite
ArgumentError — El valor name es null o una cadena vacía.
| |
ArgumentError — El valor data es 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, 02:12 PM Z