【问题标题】:How to handle plain-text passwords如何处理纯文本密码
【发布时间】:2011-06-09 15:25:05
【问题描述】:

我正在开发一个使用特定网络应用 API 的应用。 API 要求在每次调用时传递(纯文本)用户密码。由于我不熟悉密码最佳实践(尤其是在移动设备上),我想知道在我的 iPhone 应用程序中存储用户密码的最佳方式和位置是什么。非常感谢任何帮助。

【问题讨论】:

  • 我们能知道那个极其不安全的 API 的名称吗?就为了我们(作为用户)可以避免使用该服务?
  • 除非您通过 SSL 加密连接,否则 jv42 是正确的,发送飞机密码是非常疯狂的。对于使用 AES 的加密,有一个非常酷的教程在网上敲门 - 如果你想告诉我。
  • 幸运的是,我正在通过 SSL 加密进行连接 :) Tut 听起来很酷。我在哪里可以找到它?基本上我想知道在哪里安全地存储密码
  • 加密是一个很难的概念,但在某些时候你可能想要实现它。查看stackoverflow.com/q/538435/634132 了解起点

标签: iphone passwords


【解决方案1】:

如果您要存储敏感数据,则应使用钥匙串。 API 使用起来很麻烦,但是那里有一些很好的示例代码。

NSUserDefaults 易于使用,但不提供加密。如果用户的 iTunes 备份未加密,您可以在正确的备份文件上运行字符串,以明文形式查看您存储的首选项(我上周确认了这一点)。见this thread

【讨论】:

  • 谢谢。清晰而完整的答案。
【解决方案2】:

不要使用NSUserDefaults,密码的安全存储正是the keychain services的用途。

【讨论】:

    【解决方案3】:

    我将我的加密密码存储在 NSUserDefaults 中。但是,按照我之前的回答,纯文本密码不应该放在这里。

    【讨论】:

    • 不,它不是,它不是用来安全存储密码的。您应该使用钥匙串服务。
    • @jim,也许我应该根据我对这个问题的评论规定,我使用 AES 加密,所以我想将这个 aes 加密的 base 64 字符串存储在 NSUserDefaults 中是安全的。 ?我可以否决我的反对票并修改我的答案。欢呼
    • 不,从几个不同的方面来看,这仍然不是一个好的解决方案。首先,为什么要自己做加密的麻烦?这就是钥匙链的用途。其次,它不安全。您需要密钥来解密。你在哪里存储这个?在应用程序包中?任何有权访问 App Store 的人都可以得到它。第三,钥匙串更灵活 - 例如。您可以指定其内容仅在设备解锁时可用。
    • 最后,出于多种原因,避免使用平台的专用解决方案来支持您自己功能较少的替代方案是错误的。说真的,钥匙串是专为正是为了这个目的而设计的。
    • jim,对不起,在我的情况下,问题是关于发送到网络服务 - 我使用 AES 类在应用程序中加密给定密码,然后向网络服务发送一个肥皂请求然后使用相同的 I.V 和密钥对其进行解密。我正在就如何处理自己的类似情况发表自己的看法。
    猜你喜欢
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 2015-06-29
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多