パッケージ | 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 アプリケーションに対して、暗号化されたローカルストア(ELS)を提供します。これにより、他のユーザーによって簡単に解読されないように暗号化された形式で、ユーザーのローカルハードディスクに格納されたデータを保存および取得できるようになります。各 AIR アプリケーションで個別の暗号化されたローカルストアが使用され、各 AIR アプリケーションは、コンピューター上の各ユーザーアカウントに対して個別の暗号化されたローカルストアを使用します。
Web サービスに対するログイン資格情報など、セキュリティで保護する必要がある情報を格納するために暗号化されたローカルストアを使用します。他のユーザーに対して非公開にする必要がある情報を保存するには、ELS が適切です。ただし、ELS では同じユーザーアカウントで実行される他のプロセスからデータを保護することはできません。このため、DRM や暗号化キーなどの機密アプリケーションデータを保護するには適切でありません。
AIR では、Windows は DPAPI、Mac OS および iOS は KeyChain、Linux は KeyRing または KWallet を使用して、暗号化されたローカルストアを各アプリケーションおよびユーザーに関連付けます。暗号化されたローカルストアでは、128 ビットの AES-CBC 暗号化を使用します。
Android では、EncryptedLocalStorage クラスによって保存されたデータは暗号化されません。代わりに、データはオペレーティングシステムに用意されているユーザーレベルのセキュリティによって保護されます。Android オペレーティングシステムはすべてのアプリケーションに個別のユーザー ID を割り当てます。アプリケーションがアクセスできるのは、自身のファイルと、パブリックロケーション(リムーバブルストレージカードなど)で作成されたファイルだけです。ルート化された Android デバイス上では、ルート権限で実行しているアプリケーションは、他のアプリケーションのファイルにアクセス可能です。したがって、ルート化されたデバイスでは、ルート化されていないデバイスで確保される暗号化されたローカルストアの高いデータ保護レベルが実現されません。
暗号化されたローカルストアの情報は、application セキュリティサンドボックス内の AIR アプリケーションコンテンツでのみ使用できます。
AIR アプリケーションを更新すると、更新されたバージョンには暗号化されたローカルストアの既存のデータへのアクセス権が保持されます。ただし、次の場合を除きます。
-
stronglyBound
パラメーターをtrue
に設定してアイテムが追加された場合。 - AIR 3.2 名前空間から AIR 3.3 にアップグレードした場合(Mac OS と Windows の両方で、AIR 3.2 と AIR 3.3 の間に暗号化されたローカルストアの物理的な場所が変更されています)。
- 既存バージョンと更新バージョンが両方とも AIR 1.5.3 以前にパブリッシュされていて、更新が移行署名で署名されている場合。
暗号化されたローカルストアの制限事項
暗号化されたローカルストアのデータは、ユーザーのオペレーティングシステムアカウントの資格情報で保護されています。他のエンティティは、そのユーザーとしてログインできる場合を除き、ストア内のデータにアクセスできません。ただし、認証されたユーザーによって実行される他のアプリケーションからのアクセスに対しては、データのセキュリティは保護されません。このため、ライセンスに使用されるキーやデジタル権限管理など、ユーザーに公開したくないアプリケーションのデータがセキュリティ保護されません。ELS は、このような情報を保存するために適切な場所ではありません。ELS は、パスワードなどのユーザーのプライベートデータを保存する目的にのみ適しています。
ELS 内のデータは、さまざまな理由で失われる場合があります。例えば、ユーザーがアプリケーションをアンインストールしたり、暗号化されたデータを削除したりする場合があります。また、更新の結果、発行者 ID が変更される場合があります。こうした理由により、ELS は永続的なデータストレージではなく、プライベートキャッシュとして扱う必要があります。
stronglyBound
パラメーターはサポートされなくなったため、true
に設定しないでください。このパラメーターを true
に設定しても、追加のデータ保護は提供されません。同時に、発行者 ID が同じでもアプリケーションが更新されるとデータへのアクセスが失われます。
保存されるデータが 10 MB を超える場合、暗号化されたローカルストアの実行が低速化する場合があります。
AIR アプリケーションをアンインストールする場合、アンインストーラーは暗号化されたローカルストアに保存されたデータを削除しません。
ELS を使用するためのベストプラクティス
ELS を使用するためのベストプラクティスには次のようなものがあります。
- パスワードなどのユーザーの機密データを保存する目的で ELS を使用します(
stronglyBound
をfalse
に設定)。 - DRM キーやライセンスのトークンなどのアプリケーションの機密情報を保存する目的では ELS を使用しないでください。
- ELS データが失われた場合に、ELS に保存されたデータをアプリケーションで作成し直す方法を提供します。例えば、必要に応じて、ユーザーにアカウント資格情報の再入力を求めます。
-
stronglyBound
パラメーターは使用しないでください。 -
stronglyBound
をtrue
に設定する場合は、更新中に保存されたアイテムを移行しないでください。代わりに、更新後にデータを再作成します。 - 比較的少量のデータのみ保存します。大量のデータの場合は、AIR SQL データベースを暗号化して使用します。
暗号化されたローカルストアのアイテムは、ストリングで識別されます。アイテムは、すべてバイト配列データとして保存されます。
プロパティ | 定義元 | ||
---|---|---|---|
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
isSupported : Boolean [静的] [読み取り専用]
現在のプラットフォームで EncryptedLocalStore クラスがサポートされている場合、isSupported プロパティは true に設定されます。サポートされていない場合は、false に設定されます。 | EncryptedLocalStore |
メソッド | 定義元 | ||
---|---|---|---|
[静的]
指定された名前に対応するデータ。 | EncryptedLocalStore | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
[静的]
暗号化されたローカルストアから、指定された名前のアイテムを削除します。 | EncryptedLocalStore | ||
[静的]
すべてのデータを削除して、暗号化されたローカルストア全体をクリアします。 | EncryptedLocalStore | ||
[静的]
ByteArray オブジェクトを指定された名前で保存します。 | EncryptedLocalStore | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object |
isSupported | プロパティ |
getItem | () | メソッド |
public static function getItem(name:String):ByteArray
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
指定された名前に対応するデータ。
指定された名前でアイテムが見つからない場合、このメソッドは null
を返します。
パラメーター
name:String — 暗号化されたローカルストアのアイテムの名前です。
|
ByteArray — ByteArray データです。指定された名前 に対するデータが存在しない場合、メソッドは 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, 10:34 AM Z