跳过内容

MASTG-TEST-0079: 测试对象持久性

此测试即将更新

此测试目前可使用,但将作为新的 OWASP MASTG v2 指南 的一部分进行全面修订。

请提交PR来帮助我们:MASTG v1->v2 MASTG-TEST-0079:测试对象持久性 (ios)

发送反馈

概述

静态分析

所有不同类型的对象持久性都具有以下共同关注点:

  • 如果使用对象持久性在设备上存储敏感信息,请确保数据已加密:可以在数据库级别或特定于值级别。
  • 需要保证信息的完整性吗?使用HMAC机制或对存储的信息进行签名。在处理存储在对象中的实际信息之前,始终验证HMAC/签名。
  • 确保上述两个概念中使用的密钥安全地存储在KeyChain中并受到良好保护。有关更多详细信息,请参见“iOS上的数据存储”章节。
  • 确保反序列化对象中的数据在使用之前经过仔细验证(例如,不能利用业务/应用程序逻辑)。
  • 不要使用使用运行时参考来序列化/反序列化高风险应用程序中的对象的持久性机制,因为攻击者可能能够操纵步骤以通过此机制执行业务逻辑(有关更多详细信息,请参见“iOS反逆向工程防御”章节)。
  • 请注意,在Swift 2及更高版本中,可以使用Mirror读取对象的某些部分,但不能用于写入对象。

动态分析

有几种方法可以执行动态分析

  • 对于实际的持久性:使用“iOS上的数据存储”章节中描述的技术。
  • 对于序列化本身:使用调试版本或使用Frida / objection来查看如何处理序列化方法(例如,应用程序是否崩溃或是否可以通过丰富对象来提取额外信息)。