如何防止iOS上的格式字符串攻击和缓冲区溢出?

Sco*_*zie 3 security iphone objective-c ios secure-coding

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

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

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

我如何防范此类攻击?我可以申请哪些类别来防范这种情况吗?我可以使用"安全"的NSString等效物吗?

rob*_*off 5

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

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

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

没有"安全"的版本NSString.