我正在了解NSSecureCoding
Apple 在 iOS 6 中引入的协议。
据我目前的理解,每当一个类对自身的实例进行编码/解码时,都应该使用它,以防止替换攻击。
我想知道在其他情况下使用它是否合适。
具体来说,如果一个类NSCoding
通过编码/解码其实例变量而不是其自身的整个实例来遵守,那么它仍然是可取的实现NSSecureCoding
吗?
编辑
假设我有一个实现NSCoding
如下的类
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:self.aString forKey:@"aMeaningfulString"];
}
- (id)initWithCoder:(NSCoder *)decoder {
if((self = [super init])) {
self.aString = [decoder decodeObjectForKey:@"aMeaningfulString"];
}
return self;
}
并假设不涉及 XPC。此类的实例将存档在存储在磁盘上的 plist 中。
安全方面,使用-decodeObjectOfClass:forKey:
与 相比
有什么好处-decodeObjectForKey:
吗?