Protocol

NSSecureCoding

A protocol that enables encoding and decoding in a manner that is robust against object substitution attacks. エンコーディングとデコーディングを、オブジェクト置き換え攻撃に対して堅牢なある流儀で可能にするプロトコル。

Declaration 宣言

protocol NSSecureCoding

Overview 概要

Historically, many classes decoded instances of themselves like this: 歴史的に、多くのクラスはそれら自身のインスタンスをこのようにデコードしました:


if let object = decoder.decodeObjectForKey("myKey") as MyClass {
    // ...succeeds...
} else {
    // ...fail...
}

This technique is potentially unsafe because by the time you can verify the class type, the object has already been constructed, and if this is part of a collection class, potentially inserted into an object graph. この手法は潜在的に安全ではありません、なぜならあなたがクラス型を検証できるようになるまでに、オブジェクトは既に組み立てられてしまう、そしてこれがコレクションクラスの一部ならば、可能性としてオブジェクトグラフへと挿入されてしまうからです。

In order to conform to NSSecureCoding: NSSecureCodingに準拠するためには:

  • An object that does not override init(coder:) can conform to NSSecureCoding without any changes (assuming that it is a subclass of another class that conforms). init(coder:)をオーバーライドしないオブジェクトは、NSSecureCodingに何ら変更なしに準拠できます(それは、準拠する別のクラスのサブクラスであると仮定します)。

  • An object that does override init(coder:) must decode any enclosed objects using the decodeObjectOfClass:forKey: method. For example: init(coder:)をオーバーライドするオブジェクトは、あらゆる封入されたオブジェクトをdecodeObjectOfClass:forKey:メソッドを使ってデコードしなければなりません。例えば:

    
    let obj = decoder.decodeObject(of:MyClass.self, forKey: "myKey")

    In addition, the class must override the getter for its supportsSecureCoding property to return true. 加えて、クラスはそれのsupportsSecureCodingプロパティをオーバーライドしてtrueを返さなければなりません。

For more information about how this relates to the NSXPC API, see Creating XPC Services in Daemons and Services Programming Guide. どのようにこれがNSXPC APIと関連するかについてのさらなる情報として、Creating XPC ServicesDaemons and Services Programming Guideで見てください。

Topics 話題

Checking for Secure Coding 安全なコード化か確認する

Relationships 関係

Inherits From 継承元

Conforming Types これらの型が準拠

See Also 参照

Adopting Codability