IBM 工作灯。是不是可以安全地存储用户凭据并在没有用户交互的情况下恢复它们?

Posted

技术标签:

【中文标题】IBM 工作灯。是不是可以安全地存储用户凭据并在没有用户交互的情况下恢复它们?【英文标题】:IBM Worklight. Is it possible to store user credentials securely and recover them without user interacton?IBM 工作灯。是否可以安全地存储用户凭据并在没有用户交互的情况下恢复它们? 【发布时间】:2014-08-26 09:16:40 【问题描述】:

在应用程序中安全存储用户凭据(用户 ID/用户密码)并在下次应用程序启动时自动使用它们是一个常见要求,但我无法弄清楚如何在没有用户交互的情况下执行此操作.

使用 JSON 存储我需要密码来加密信息,因此如果我将用户凭据存储在 JSON 存储中,我需要向用户询问用于加密信息的密码。

我想出的一个解决方案是将用户 ID 存储在不加密的 JSON 存储中,并将密码存储在使用用户 ID 作为密码加密的 JSON 存储中。这个解决方案可能比不加密任何东西提供更多的安全性,但我认为这不是一个完整的解决方案。

正如 cmets 中所解释的,这是一个非常糟糕的主意。

是否有任何解决方案可以安全地存储用户凭据并在无需用户交互的情况下恢复它们?

【问题讨论】:

“也许这个解决方案比不加密任何东西提供了更多的安全性” 不。就像锁上门但把钥匙放在门前一样安全。 好吧,我猜的。关于如何安全地存储用户凭据并在没有用户交互的情况下恢复它们的任何评论?有可能吗? 仅供参考 - 我在下面更新了我的答案并提出了一些建议。 【参考方案1】:

您可以在 ios 上使用the Keychain API。 android doesn't seem to have an equivalent API.

我想出的最完整的解决方案是将用户 ID 存储在未加密的 JSON 存储中,并将密码存储在使用用户 ID 作为密码的 JSON 存储中。这个解决方案可能比不加密任何东西提供更多的安全性,但我认为这不是一个完整的解决方案。

我会强烈建议不要这样做,如果您以纯文本形式存储加密密钥(用户 ID),那么攻击者可以简单地使用它来获取密码。

更新(2014 年 8 月 27 日)

你应该考虑:

Hashing - 你可以散列你想要保护的值。这些是单向函数,因此一旦对密码进行哈希处理,就无法取回密码。但是,您可以验证用户是否提供了正确的密码。例如:首先登录您store( hash(password) ),然后在下次登录时比较hash(password_provided) == stored_password_hash。如果匹配,则用户提供了相同的密码。您还应该使用salt。

1234563然后,您可以使用 pin 作为 PBKDF2 输入来生成加密密钥(当您将 pin 作为密码传递时,JSONStore 将为您执行此操作)。我建议让用户只尝试少量不正确的密码,特别是如果密码只是数字和短的,这样他们就不能通过尝试各种组合来轻易猜出密码。这里的想法是,pin 比密码更容易记住和输入。

仅供参考 - 有一个类似于 *** 的 Stack Exchange 站点,但用于安全问题 here。

【讨论】:

以上是关于IBM 工作灯。是不是可以安全地存储用户凭据并在没有用户交互的情况下恢复它们?的主要内容,如果未能解决你的问题,请参考以下文章

将 pdf 文件安全地存储在服务器上

Git http - 安全地记住凭据

MySQL / 存储 MySQL 凭据

在 GitLab 中安全地存储秘密和凭据

如何在 Android 应用程序中安全地存储凭据(密码)?

IBM Worklight 6.1 - WL.Server.setActiveUser 凭证,它安全吗?