问题标签 [nssecurecoding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
13769 浏览

ios - 何时使用 NSSecureCoding

我正在了解NSSecureCodingApple 在 iOS 6 中引入的协议。

据我目前的理解,每当一个类对自身的实例进行编码/解码时,都应该使用它,以防止替换攻击。

我想知道在其他情况下使用它是否合适。

具体来说,如果一个类NSCoding通过编码/解码其实例变量而不是其自身的整个实例来遵守,那么它仍然是可取的实现NSSecureCoding吗?


编辑

假设我有一个实现NSCoding如下的类

并假设不涉及 XPC。此类的实例将存档在存储在磁盘上的 plist 中。

安全方面,使用-decodeObjectOfClass:forKey:与 相比 有什么好处-decodeObjectForKey:吗?

0 投票
1 回答
277 浏览

objective-c - 采用不透明类型的 NSSecureCoding

我有一个需要采用NSSecureCoding跨 XPC 连接进行传输的 Objective-C 类。该类有几个不透明类型的属性(dispatch_queue_tdispatch_group_t)。

-initWithCoder:在这种情况下,我将如何实施-encodeWithCoder:?文档说这些是类似对象的结构,所以我假设在编码/解码时需要将它们转换为原始字节/从原始字节转换?如果是这种情况,我不确定应该使用哪些方法来做到这一点。另一种选择是完全避免对它们进行编码并在内部重新创建它们-initWithCoder:

0 投票
4 回答
2889 浏览

ios - 通过 NSSecureCoding 解码 NSArray 时的奇怪行为

我整个下午都在用头撞墙,试图弄清楚为什么这个类的解码失败了。该类有一个属性,它是 Foo 对象的 NSArray。Foo 符合 NSSecureCoding,我已经成功地自行编码和解码了该类。我在 initWithCoder 中遇到错误:表示解码类 Foo 失败。通过一些实验,我发现我需要将 [Foo class] 添加到 initWithCoder: 以使其工作。也许这会帮助遇到同样问题的其他人。我的问题是,为什么这是必要的?我在苹果的文档中没有发现有必要这样做的建议。

0 投票
5 回答
4448 浏览

objective-c - 如何使用 NSSecureCoding 来保证集合类的内容?

我有一个 class 的对象,SGBContainer它有一个名为的数组objects,其中包含 class 的对象SGBObject。目前,它们都实现了 NSCoding,但没有实现 NSSecureCoding。-initWithCoder:forSGBContainer看起来像这样:

我想改用 NSSecureCoding,据我所知,这意味着将上面的内容更改为:

...这并没有太大的改进,因为无论它们的类如何,数组的内容都将被实例化。如何确保数组只包含类对象SGBObject而不实例化它们?

0 投票
3 回答
8299 浏览

objective-c - 自定义类集合的 NSSecureCoding 问题

我在采用 NSSecureCoding 时遇到了麻烦。我对包含我的自定义类的对象的数组进行编码,该类NSSecureCoding正确采用。当我解码它并传递类NSArray(这是我编码的对象的类)时,它会引发异常。但是,当对字符串数组执行完全相同的操作时,它可以正常工作。我看不出我的班级和 NSString 有什么区别。

0 投票
1 回答
5463 浏览

ios - 使用 NSSecureCoding 强制类型

我决定使用NSSecureCodingover NSCoding,但我无法让它工作。

我希望以下代码会失败,因为我正在编码一个NSString但试图解码一个NSNumber. 但是,该对象被初始化而不会引发异常。

这是我用来测试上面代码片段的代码:

我是否遗漏了一些完全明显的东西,或者为什么在解码过程中没有抛出异常?

0 投票
1 回答
1099 浏览

ios - Swift 中的 NSSecureCoding (Facebook SDK)

我正在尝试将一段 Objective-C 代码翻译成 Swift 代码。

目标-C:

我将这段代码翻译成这样:

这给了我一个错误:类型“CacheItem”不符合协议“NSSecureCoding”

我在这里想念什么?

提前致谢!

0 投票
1 回答
2008 浏览

objective-c - 如何将 NSSecureCoding 与 id 对象一起使用

我正在创建一个链表并使用容器对对象、下一个和上一个属性进行分组。像 Foundation 集合一样,我希望它实现NSSecureCoding. 这是声明:

在实现该- initWithCoder:方法时,我不知道该对象使用哪个类:

我应该-decodeObjectForKey:改用吗?它仍然是安全编码吗?

0 投票
1 回答
96 浏览

ios - 是否可以解码包含未知对象的 NSKeyedArchived 集合

我有一组具有不同类 A、B 和 C 的对象(都共享一个共同的超类):

该集合通过 NSCoding 归档和取消归档。 如果其中一个类已从项目中删除,是否有办法部分取消归档此集合

当遇到无法解码的对象时,它似乎decodeObjectForKey:失败并返回一个对象。nil有没有办法只获取能够解码的内容?我理解为什么这种行为对对象有意义,但对集合没有意义。

0 投票
1 回答
3783 浏览

ios - 如何在 Swift 3 中使用 NSSecureCoding 解码字符串?

我目前正在尝试 iOS 10 Beta 并决定将我的 Swift 代码转换为 Swift 3。到目前为止,我能够使用安全地解码字符串

转换为 Swift 3 后,Xcode 给我以下错误:

正如我所提到的,我正在使用 NSSecureCoding,所以很遗憾decodeObject(forKey: String)不会这样做。这是一个测试错误吗?我错过了什么?