Apple 的 Secure Coding Guide文档提供了以下方面的指导:
- 格式化字符串攻击
- 缓冲区溢出
(无论如何对我来说)不清楚的是如何在使用 NSString 时防止格式字符串攻击和缓冲区溢出。
我该如何防御此类攻击? 我可以申请任何类别来防止这种情况发生吗? 是否有我可以使用的“安全”NSString 等效项?
最佳答案
当您将数据放入 NSString
(或 NSMutableString
)时,缓冲区溢出通常不是问题,因为当您创建 NSString
,你必须告诉它你给它多少数据,它会自动分配足够的私有(private)存储空间来保存你给它的数据。坚持使用已发布的 API,不要尝试任何恶作剧,例如从 UTF8String
返回的指针中丢弃 const
并通过指针写入。
请注意,NSMutableData
与 NSMutableString
不同,它提供了 mutableBytes
消息,它会返回一个指向允许写入的内存的指针。因此,如果您正在使用该 API,则必须小心缓冲区溢出。
对于格式字符串,您只需遵循该文档中的建议即可。例如,永远不要将来自不受信任来源的数据作为格式参数传递,甚至不要作为格式参数的一部分传递。通常,您的格式字符串应该是字符串文字,或者它们应该从 NSLocalizedString
返回。
NSString
没有“安全”版本。
关于iphone - 如何防止 iOS 上的格式字符串攻击和缓冲区溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12946664/