Pacote | flash.data |
Classe | public class EncryptedLocalStore |
Herança | EncryptedLocalStore Object |
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0 |
Os dados de ELS não podem ser compartilhados entre aplicativos. O objetivo do ELS é permitir que um aplicativo armazene itens recriados com facilidade, como credenciais de logon e outras informações privadas. Os dados de ELS não devem ser considerados permanentes. Consulte "Limitações do armazenamento local criptografado" e "Práticas recomendadas do uso de ELS". abaixo.
Suporte a perfil do AIR: não há suporte para este recurso em dispositivos AIR for TV. Você pode testar o suporte em tempo de execução usando a propriedade EncryptedLocalStore.isSupported
. Consulte Suporte a perfil do AIR para obter mais informações sobre o suporte de API através de múltiplos perfis.
O AIR fornece um armazenamento local criptografado (ELS) para cada aplicativo AIR instalado em um computador ou dispositivo de um usuário. Isso permite salvar e recuperar dados armazenados no disco rígido local do usuário em um formato criptografado que não possa ser facilmente decifrado por outros aplicativos ou usuários. Um armazenamento criptografado separado é usado para cada aplicativo AIR, e cada aplicativo AIR usa um armazenamento local criptografado separado para cada conta de usuário no computador.
Use o armazenamento local criptografado para armazenar em cache informações que devem ser protegidas, tais como credenciais de login para serviços da Web. O ELS é apropriado para armazenar informações que devem ser mantidas sigilosas para outros usuários. O ELS, contudo, não protege os dados de outros processos executados sob a mesma conta de usuário. Desta maneira, não é apropriado para proteger dados de aplicativo secretos, tais como DRM (gerenciamento digital de direitos) ou chaves de criptografia.
O AIR utiliza o DPAPI no Windows, o KeyChain no Mac OS e iOS e o KeyRing ou KWallet no Linux para associar o armazenamento local criptografado a cada aplicativo e usuário. O armazenamento local criptografado usa a criptografia AES-CBC de 128 bits.
No Android, os dados armazenados pela classe EncryptedLocalStorage não são criptografados. Em vez disso, os dados são protegidos pela segurança em nível de usuário fornecida pelo sistema operacional. O sistema operacional Android atribui um ID de usuário separado para cada aplicativo. Os aplicativos podem acessar somente seus próprios arquivos e arquivos criados em locais públicos (tais como cartões de armazenamento removíveis). Observe que nos dispositivos de raiz do Android os aplicativos que operam com privilégios de raiz podem acessar os arquivos de outros aplicativos. Dessa forma, em um dispositivo enraizado, o armazenamento local criptografado não fornece um nível muito alto de proteção de dados como ocorre em um dispositivo não-enraizado.
As informações no depósito local criptografado só estão disponíveis a conteúdo de aplicativos AIR na área de segurança application.
Se você atualizar um aplicativo AIR, a versão atualizada conservará o acesso a qualquer dado existente no armazenamento local criptografado, a menos que:
- Os itens foram adicionados com o conjunto de parâmetros
stronglyBound
definido comotrue
- Você atualizou do namespace AIR 3.2 para o AIR 3.3 (o local físico do armazenamento local criptografado entre o AIR 3.2 e o AIR 3.3 para Mac OS e Windows)
- As versões existentes e as versões de atualização foram ambas publicadas antes do AIR 1.5.3 e a atualização foi assinada com uma assinatura de migração
Limitações do armazenamento local criptografado
Os dados no armazenamento local criptografado são protegidos pelas credenciais de conta do sistema operacional do usuário. Outras entidades não podem acessar os dados no armazenamento, a menos que eles possam fazer logon como aquele usuário. Contudo, os dados não são protegidos contra o acesso por outros aplicativos executados por um usuário autenticado. Assim, o dado que o seu aplicativo pode querer manter-se secreto de usuários, tais como chaves usadas para autorização ou gerenciamento digital dos direitos, não é seguro. O ELS não é um local apropriado para armazenar tais informações. É apenas um lugar apropriado para guardar dados particulares de um usuário, tais como senhas.
Os dados no ELS podem ser perdidos por vários motivos. Por exemplo, o usuário pode desinstalar o aplicativo e excluir o arquivo criptografado. Ou o ID do publicador pode ser modificado em consequência de uma atualização. Assim, o ELS deve ser tratado como uma cache particular, não como um armazenamento de dados permanente.
O parâmetro stronglyBound
é deprecado e não deve ser definido como true
. Definir o parâmetro como true
não fornece nenhuma proteção adicional para os dados. Ao mesmo tempo, o acesso aos dados é perdido sempre que o aplicativo é atualizado — mesmo que ID do publicador seja o mesmo.
O depósito local criptografado poderá ficar mais lento se os dados armazenados excederem 10 MB.
Quando você desinstala um aplicativo AIR, o desinstalador não exclui os dados armazenados no depósito local criptografado.
Práticas recomendadas do uso de ELS
As melhores práticas para usar o ELS incluem:
- Usar o ELS para armazenar dados de usuário sensíveis, tais como senhas (configurando
stronglyBound
comofalse
) - Não use o ELS para armazenar segredos de aplicativos, tais como chaves de DRN ou símbolos de licenciamento
- Forneça um caminho do seu aplicativo para recriar os dados guardados no ELS, se os dados do ELS forem perdidos. Por exemplo, solicitando ao usuário que reinsira as suas credenciais de conta quando necessário.
- Não use o parâmetro
stronglyBound
. - Se você definir
stronglyBound
comotrue
, não migre itens armazenados durante uma atualização. Em vez disso, recrie os dados depois da atualização. - apenas guarde quantidades relativamente pequenas de dados. Para grandes quantidades de dados, use um banco de dados AIR SQL com criptografia.
Os itens no depósito local criptografado são identificados por uma string. Todos os itens são armazenados como dados de matriz de bytes.
Propriedade | Definido por | ||
---|---|---|---|
constructor : Object
Uma referência ao objeto de classe ou à função de construtor de uma determinada ocorrência de objeto. | Object | ||
isSupported : Boolean [estático] [somente leitura]
A propriedade isSupported será definida como true se a classe EncryptedLocalStore for suportada na plataforma atual; de outra maneira, ela será definida como false. | EncryptedLocalStore |
Método | Definido por | ||
---|---|---|---|
[estático]
Os dados correspondentes ao nome especificado. | EncryptedLocalStore | ||
Indica se um objeto tem uma propriedade especificada definida. | Object | ||
Indica se uma ocorrência da classe Object está na cadeia de protótipos do objeto especificado como o parâmetro. | Object | ||
Indica se a propriedade especificada existe e é enumerável. | Object | ||
[estático]
Remove o item com o nome especificado no armazenamento local criptografado. | EncryptedLocalStore | ||
[estático]
Limpa todo o depósito local criptografado, excluindo todos os dados. | EncryptedLocalStore | ||
[estático]
Armazena um objeto ByteArray sob o nome especificado. | EncryptedLocalStore | ||
Define a disponibilidade de uma propriedade dinâmica para operações de repetição. | Object | ||
Retorna a representação da string deste objeto, formatado segundo as convenções específicas para a localidade. | Object | ||
Retorna a representação de string do objeto especificado. | Object | ||
Retorna o valor primitivo do objeto especificado. | Object |
isSupported | propriedade |
isSupported:Boolean
[somente leitura] Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 2 |
A propriedade isSupported
será definida como true
se a classe EncryptedLocalStore for suportada na plataforma atual. de outra maneira, ela será definida como false
.
Implementação
public static function get isSupported():Boolean
getItem | () | método |
public static function getItem(name:String):ByteArray
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0 |
Os dados correspondentes ao nome especificado.
Se não existir um item com o nome especificado, esse método retornará null
.
Parâmetros
name:String — O nome do item no armazenamento local criptografado.
|
ByteArray — Os dados ByteArray. Se não houver dados para o name fornecido, o método retornará null .
|
Lança
ArgumentError — O valor name é null ou uma string vazia.
|
removeItem | () | método |
public static function removeItem(name:String):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0 |
Remove o item com o nome especificado no armazenamento local criptografado.
Parâmetros
name:String — O nome do item no armazenamento local criptografado.
|
Lança
ArgumentError — O valor name é null ou uma string vazia.
|
reset | () | método |
public static function reset():void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0 |
Limpa todo o depósito local criptografado, excluindo todos os dados.
setItem | () | método |
public static function setItem(name:String, data:ByteArray, stronglyBound:Boolean = false):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0 |
Armazena um objeto ByteArray sob o nome especificado.
Parâmetros
name:String — O nome do item no armazenamento local criptografado.
| |
data:ByteArray — Os dados.
| |
stronglyBound:Boolean (default = false ) — (deprecado) O parâmetro stronglyBound deve ser definido como false (o valor padrão). Se for definido como true , o item armazenado não poderá ser recuperado se algum arquivo do aplicativo for alterado. Por exemplo, se um usuário instalar uma atualização do aplicativo, o aplicativo atualizado não poderá ler nenhum dado fortemente vinculado que tenha sido gravado anteriormente no armazenamento local criptografado.
|
Lança
ArgumentError — O valor name é null ou uma string vazia.
| |
ArgumentError — O valor 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");
Wed Jun 13 2018, 11:10 AM Z