【问题标题】:Storing password in the client side using Appcelerator - Design Approach使用 Appcelerator 在客户端存储密码 - 设计方法
【发布时间】:2017-01-10 21:43:34
【问题描述】:

我正在使用 Appcelerator 创建一个应用程序,其中用户需要输入用户名和密码才能登录。登录后,用户可以启用 TouchID 进行身份验证。退出后,用户可以使用TouchID进行身份验证并使用应用程序。

我的流程是,一旦提供了用户名和密码,我使用以下模块 iOS Keychain Module 将这两个信息存储在钥匙串中。然后我使用 ti.touchid 来验证指纹,如果成功,然后我从钥匙串中检索用户名和密码,然后通过 HTTPS Web 服务调用将其发送并将用户登录到应用程序。

我的疑问是,这是否是一种可接受的方法。

【问题讨论】:

    标签: ios appcelerator


    【解决方案1】:

    我不是 iOS 开发人员,任何 ti 或钥匙串术语对我来说都没有任何意义。这是一个开始,并减少我可能得到的反对票的数量。

    在安全方面,我建议您想象获得特定用户的手机,您知道您存储了一些身份验证凭据。假设我是您的应用程序的用户,已经登录并将我的凭据保存在我的设备上的某个位置,并且您通过从我那里窃取了这部手机。

    现在,您还能访问我的帐户吗?有权访问实体电话的黑客是否能够检索存储在您的钥匙串存储中的任何信息?

    如果是这样,如果你能想办法这样做,那么你的方法是无效的

    我了解您希望通过确保用户可以仅使用指纹登录来节省用户的时间,这是考虑这种方法的正当理由,但您必须从逆向工程的角度考虑一切。

    其他建议是使用动态哈希将信息存储在钥匙串中,并确保在恢复之前检查该信息。例如,保存在“家庭 wifi”上的用户凭据只能在同一 wifi 网络上的“在家”上使用您的指纹进行验证,而在不同的网络上相同的指纹将无效。

    即) (keychainItem.x = y) 仅在(其他)时为真

    这(其他东西)可以防止黑客访问钥匙串,即使他们有权访问设备本身。

    在使用存储的 cookie 编写 Web 应用程序时,我自己会这样做。例如,我仅在从保存它的同一 IP 访问它时才使用存储的 cookie。每当 IP 地址发生变化时,即使 cookie 值正确,用户也必须重新进行身份验证。

    希望这会有所帮助。

    【讨论】:

    • 我喜欢你的方法 Ruslan。在设计这种方法时,请牢记您提到的一些指针。但在标记答案之前,我会保持这个问题的开放性以获得更多想法。
    • 当然@Soumya,很高兴能帮到你,祝你工作顺利。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多