패키지 | 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 응용 프로그램에서 컴퓨터의 각 사용자 계정에 대해 별도의 로컬 저장소를 사용합니다.
암호화된 로컬 저장소를 사용하여 웹 서비스의 로그인 자격 증명과 같이 보호가 필요한 캐시 정보를 저장합니다. ELS는 다른 사용자에게 비공개로 유지해야 하는 정보를 저장하는 데 적합합니다. 그러나 ELS가 동일한 사용자 계정의 다른 프로세스 실행으로부터 데이터를 보호하는 것은 아닙니다. 따라서 DRM이나 암호화 키 같은 기밀 응용 프로그램 데이터를 보호하는 데는 적합하지 않습니다.
AIR에서는 DPAPI(Windows), KeyChain(Mac OS 및 iOS), KeyRing 또는 KWallet(Linux)을 사용하여 암호화된 로컬 저장소를 각 응용 프로그램 및 사용자와 연결합니다. 암호화된 로컬 저장소는 AES-CBC 128비트 암호화를 사용합니다.
Android에서 EncryptedLocalStorage 클래스가 저장하는 데이터는 암호화되지 않습니다. 대신 운영 체제에서 제공하는 사용자 수준 보안으로 데이터가 보호됩니다. Android 운영 체제는 모든 응용 프로그램에 별도의 사용자 ID를 할당합니다. 응용 프로그램은 해당 응용 프로그램 고유의 파일 및 공용 위치(예: 이동식 저장소 카드)에 만들어진 파일만 액세스할 수 있습니다. “루트로 지정된” Android 장치에서 루트 권한으로 실행 중인 응용 프로그램은 다른 응용 프로그램의 파일에 액세스할 수 있습니다. 따라서 루트로 지정된 장치에서 암호화된 로컬 저장소는 루트로 지정되지 않은 장치에서와 같은 높은 수준의 데이터 보호를 제공하지 않습니다.
암호화된 로컬 저장소의 정보는 응용 프로그램 보안 샌드박스의 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의 데이터는 여러 가지 이유로 손실될 수 있습니다. 예를 들어 사용자가 응용 프로그램을 제거하거나 암호화된 파일을 삭제할 수 있습니다. 또는 업데이트 결과 게시자 ID가 변경될 수도 있습니다. 따라서 ELS는 영구적인 데이터 저장소가 아닌 개인 캐시로 취급해야 합니다.
stronglyBound
매개 변수는더 이상 사용되지 않으므로 true
로 설정해서는 안 됩니다. 이 매개 변수를 true
로 설정해도 추가적인 데이터 보호 효과는 없습니다. 또한 게시자 ID가 변경되지 않아도 응용 프로그램이 업데이트될 때마다 데이터 액세스 권한이 사라집니다.
암호화된 로컬 저장소는 저장된 데이터가 10MB를 초과할 경우 속도가 느려질 수 있습니다.
AIR 응용 프로그램을 제거해도 암호화된 로컬 저장소에 저장된 데이터가 삭제되지는 않습니다.
ELS 사용을 위한 유용한 방법
ELS는 다음과 같이 활용하는 것이 바람직합니다.
- 암호 같은 민감한 사용자 데이터를 저장하는 데 사용합니다(
stronglyBound
를false
로 설정). - DRM 키나 라이센스 토큰 같은 응용 프로그램 기밀 정보를 저장하는 데는 사용하지 않습니다.
- 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 데이터입니다. 제공된 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, 03:17 PM Z