我想在iOS应用程序中清除敏感数据的内存。
在Windows中,我曾经使用SecureZeroMemory。现在,在iOS中,我使用普通的memset,但我有一点担心编译器可能会对其进行优化:
https://buildsecurityin.us-cert.gov/bsi/articles/knowledge/coding/771-BSI.html
代码片段:
NSData *someSensitiveData;
memset((void *)someSensitiveData.bytes, 0, someSensitiveData.length);
secure_memset
函数可能不够安全。根据http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1381.pdf,有些优化编译器只会将第一个字节清零。 - Daniel Trebbienvolatile char *p = v; while (n--) *p++ = c;
。 - Daniel Trebbiensecure_memset()
并不能真正帮助,因为黑客可以在函数调用之前设置断点并读取内存。甚至这个调用可能会帮助黑客发现您安全性的关键部分。如果有的话,您最多只能获得微小的安全提升,但却失去了简单性。 - nalply