NSSecureCoding
継承:なし
準拠:NSCoding
フレームワーク:OS X 10.0 以降の Foundation。関連項目
概観
NSSecureCoding プロトコルに準拠すると、オブジェクトは、オブジェクトの置換攻撃に対して荒々しい方法で自身のインスタンスの符号化と復号化を処理することを示しています。
歴史的に、多くのクラスは次のように自分自身のインスタンスを復号化します:
<< OBJECTIVE-C >>
- id obj = [decoder decodeObjectForKey:@"myKey"];
- if (![obj isKindOfClass:[MyClass class]]) {...fail...}
<< SWIFT >>
- if let object = decoder.decodeObjectForKey("myKey") as MyClass {
-         ...succeeds...
- } else {
-         ...fail...
- }
この技術は、時間によって、クラスの種類を確認することができるので、オブジェクトがすでに構築されていて、安全でない可能性があり、これがコレクションクラスの一部である場合、潜在的にオブジェクトグラフに挿入されます。
NSSecureCoding に準拠するためには:
- initWithCoder: をオーバーライドしないオブジェクトは、(それが準拠する別のクラスのサブクラスだと仮定して) 変更することなく NSSecureCoding に準拠することができます。
- initWithCoder をオーバーライドしないオブジェクトは decodeObjectOfClass:forKey: メソッドを使用して、任意の囲まれたオブジェクトを復号しなければなりません。 例えば:
<< OBJECTIVE-C >>
- id obj = [decoder decodeObjectOfClass:[MyClass class]
-                         forKey:@"myKey"];
<< SWIFT >>
let obj = decoder.decodeObjectOfClass(MyClass.self, forKey: "myKey")
また、クラスは、YES を返すために、その supportsSecureCoding メソッドをオーバーライドしなければなりません。
これに関する情報の詳細については NSXPC API に関連しており、デーモンとサービスプログラミングガイド の XPC サービスの作成 を参照してください。
タスク
安全にコード化する要件の確認
+ supportsSecureCoding 必須
クラスは、安全にコード化するのをサポートしているかどうかを返します。
宣言
<< SWIFT >>
static func supportsSecureCoding() -> Bool << OBJECTIVE-C >>+ (BOOL)supportsSecureCoding
戻り値
あなたのクラスが、安全にコード化するのをサポートしていれば YES、そうでない場合は、NO を返します。
利用可能
OS X v10.8 以降で利用可能。
次の章