如何防止 iOS 上的格式字符串攻击和缓冲区溢出?
Posted
技术标签:
【中文标题】如何防止 iOS 上的格式字符串攻击和缓冲区溢出?【英文标题】:How do I prevent format string attacks and buffer overruns on iOS? 【发布时间】:2012-10-18 03:33:17 【问题描述】:Apple 的 Secure Coding Guide 文档提供了以下方面的指导:
格式字符串攻击 缓冲区溢出不清楚(对我来说,无论如何)是如何防止使用 NSString 时的格式字符串攻击和缓冲区溢出。
如何防御此类攻击? 我可以申请任何类别来防止这种情况吗? 有没有我可以使用的“安全”NSString 等效项?
【问题讨论】:
【参考方案1】:当您将数据放入NSString
(或NSMutableString
)时,缓冲区溢出通常不是问题,因为当您创建NSString
时,您必须告诉它您提供了多少数据,它会自动分配足够的私有存储空间来保存你给它的东西。只需坚持已发布的 API,不要尝试任何恶作剧,例如从 UTF8String
返回的指针中丢弃 const
并通过指针写入。
请注意,NSMutableData
与 NSMutableString
不同,它提供了 mutableBytes
消息,该消息返回一个指向允许您写入的内存的指针。因此,如果您使用该 API,则必须小心缓冲区溢出。
对于格式字符串,您只需遵循该文档中的建议即可。例如,永远不要将来自不受信任来源的数据作为格式参数传递,甚至作为格式参数的一部分。通常,您的格式字符串应该是字符串文字,或者应该从 NSLocalizedString
返回。
NSString
没有“安全”版本。
【讨论】:
以上是关于如何防止 iOS 上的格式字符串攻击和缓冲区溢出?的主要内容,如果未能解决你的问题,请参考以下文章