3

Apple 的安全编码指南文档提供了以下方面的指导:

  • 格式化字符串攻击
  • 缓冲区溢出

不清楚(对我来说,无论如何)是如何在使用 NSString 时防止格式字符串攻击和缓冲区溢出。

我该如何防御此类攻击?我可以申请任何类别来防止这种情况吗?我可以使用“安全”的 NSString 等价物吗?

4

1 回答 1

5

NSString当您将数据放入(或)时,缓冲区溢出通常不是问题NSMutableString,因为当您创建 时NSString,您必须告诉它您提供了多少数据,并且它会自动分配足够的私有存储空间来保存您提供的内容它。只需坚持已发布的 API,不要尝试任何恶作剧,例如抛弃const由返回的指针UTF8String并通过指针写入。

请注意NSMutableData,与 不同NSMutableString的是,它提供了mutableBytes消息,该消息返回一个指向允许您写入的内存的指针。因此,如果您使用该 API,则必须小心缓冲区溢出。

对于格式字符串,您只需遵循该文档中的建议即可。例如,永远不要将来自不受信任来源的数据作为格式参数传递,甚至作为格式参数的一部分。通常,您的格式字符串应该是字符串文字,或者它们应该从NSLocalizedString.

没有“安全”版本的NSString.

于 2012-10-18T03:53:23.773 回答