使用 Appcelerator 在客户端存储密码 - 设计方法
Storing password in the client side using Appcelerator - Design Approach
我正在使用 Appcelerator 创建一个应用程序,用户需要输入用户名和密码才能登录。登录后,用户可以启用 TouchID 进行身份验证。注销后,用户可以使用TouchID进行身份验证并使用应用程序。
我的流程是,一旦提供了用户名和密码,我就使用以下模块 iOS Keychain Module 将这两个信息存储在钥匙串中。然后我使用 ti.touchid 验证指纹,如果成功,然后我从钥匙串中检索用户名和密码,然后通过 HTTPS 网络服务调用发送它,并将用户登录到应用程序。
我的疑问是,这是否是一种可接受的方法。
我不是 iOS 开发人员,任何 ti 或钥匙串术语对我来说都没有任何意义。这是为了开始并减少我可能获得的否决票的数量。
就安全性而言,我建议您想象获取该特定用户的 phone,您知道您在其中存储了一些身份验证凭据。假设我是你的应用程序的用户,已经登录并将我的凭据保存在我的设备上的某个地方,你通过从我这里窃取它来获得这个 phone。
现在,你还能访问我的帐户吗?有权访问物理 phone 的黑客是否能够检索存储在您的钥匙串存储中的任何信息?
如果是这样,如果你无论如何都能想到这样做,那么你的方法是无效的。
我知道您想通过确保用户仅使用指纹登录来节省用户的时间,这是考虑这种方法的正当理由,但您必须从逆向工程的角度考虑一切。
其他建议是使用即时哈希将信息存储在钥匙串中,并确保在恢复之前进行检查。例如,保存在 "home wifi" 上的用户凭据只能在同一 wifi 网络上使用您的指纹 "at home" 进行验证,而在不同的网络上则无效。
即)
(keychainItem.x = y) 只有在(其他)
时才为真
这个(其他东西)可以防止黑客访问钥匙串,即使他们可以访问设备本身。
我在使用存储的 cookie 编写 Web 应用程序时自己这样做。例如,仅当从保存它的同一 IP 访问它时,我才使用存储的 cookie。只要 IP 地址发生变化,即使 cookie 值正确,用户也必须重新进行身份验证。
希望对您有所帮助。
我正在使用 Appcelerator 创建一个应用程序,用户需要输入用户名和密码才能登录。登录后,用户可以启用 TouchID 进行身份验证。注销后,用户可以使用TouchID进行身份验证并使用应用程序。
我的流程是,一旦提供了用户名和密码,我就使用以下模块 iOS Keychain Module 将这两个信息存储在钥匙串中。然后我使用 ti.touchid 验证指纹,如果成功,然后我从钥匙串中检索用户名和密码,然后通过 HTTPS 网络服务调用发送它,并将用户登录到应用程序。
我的疑问是,这是否是一种可接受的方法。
我不是 iOS 开发人员,任何 ti 或钥匙串术语对我来说都没有任何意义。这是为了开始并减少我可能获得的否决票的数量。
就安全性而言,我建议您想象获取该特定用户的 phone,您知道您在其中存储了一些身份验证凭据。假设我是你的应用程序的用户,已经登录并将我的凭据保存在我的设备上的某个地方,你通过从我这里窃取它来获得这个 phone。
现在,你还能访问我的帐户吗?有权访问物理 phone 的黑客是否能够检索存储在您的钥匙串存储中的任何信息?
如果是这样,如果你无论如何都能想到这样做,那么你的方法是无效的。
我知道您想通过确保用户仅使用指纹登录来节省用户的时间,这是考虑这种方法的正当理由,但您必须从逆向工程的角度考虑一切。
其他建议是使用即时哈希将信息存储在钥匙串中,并确保在恢复之前进行检查。例如,保存在 "home wifi" 上的用户凭据只能在同一 wifi 网络上使用您的指纹 "at home" 进行验证,而在不同的网络上则无效。
即) (keychainItem.x = y) 只有在(其他)
时才为真这个(其他东西)可以防止黑客访问钥匙串,即使他们可以访问设备本身。
我在使用存储的 cookie 编写 Web 应用程序时自己这样做。例如,仅当从保存它的同一 IP 访问它时,我才使用存储的 cookie。只要 IP 地址发生变化,即使 cookie 值正确,用户也必须重新进行身份验证。
希望对您有所帮助。