我的程序让用户创建一个密码,用于访问程序的数据。在创建过程中,程序流程如下:
- 要求用户输入密码
- 要求用户重新输入密码
- 如果密码匹配继续,则转到步骤 1 并重新开始该过程
为了比较两个输入的密码,我将密码临时存储到一个实例变量中。这可能是一个潜在的安全漏洞吗?如果是这样,为什么这是一个问题,您的解决方案是什么?也许存储它的散列版本?谢谢!
我的程序让用户创建一个密码,用于访问程序的数据。在创建过程中,程序流程如下:
为了比较两个输入的密码,我将密码临时存储到一个实例变量中。这可能是一个潜在的安全漏洞吗?如果是这样,为什么这是一个问题,您的解决方案是什么?也许存储它的散列版本?谢谢!
我认为你可以接近(将密码存储在 iVar 中)。
也许您需要为自己定义“安全漏洞”。当然,攻击者有可能从被盗的 iPhone 中读取存储的内存并重建密码。但这些数据是否合理?
您可以通过用空字节(与输入的密码长度相同)覆盖内存、删除明文密码内存中的所有引用并只保留输入密码的 SHA256 来改进您的安全概念。还要确保在收到 UIApplicationDidEnterBackgroundNotification 时进行空字节覆盖和删除。
但我认为这样做不值得。
将该密码暂时存储在 iVar 中没有任何问题。