问题标签 [password-storage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
608 浏览

windows - 为开源桌面应用程序加密磁盘上的密码

是否可以在本地系统 (Windows XP) 上存储只能由应用程序本身访问的密码?

我本能的回答是“不”。即使使用了某种散列或加密,我认为只要源代码可用,那么确定的搜索者总是可以使用它来检索密码。

我正在从事一个个人开源爱好项目,我想在该项目中为用户提供将密码存储在磁盘上的选项,这样他们就不需要在每次使用该软件时都输入密码。可以存储的密码的一个示例是用于在其网络的代理服务器上进行身份验证的密码。

这里有一些关于 Stack Overflow 的相关问题,最合适的解决方案听起来像是使用像 DPAPI 这样的操作系统服务。

只要密码可以在没有任何用户输入的情况下由软件检索,并且源代码是开源的,那么基本前提是否正确?

0 投票
5 回答
2167 浏览

.net - Castle ActiveRecord / NHibernate - 密码加密或散列

使用您不想以明文形式存储在数据库中的密码的正确方法是什么?我在 NHibernate / Castle ActiveRecord 中有哪些选择?

更新: 我对其他人如何使用 NHibernate / Castle ActiveRecord 处理这个问题很感兴趣。如果 NHibernate 或 Castle ActiveRecord 中内置了任何东西。

0 投票
4 回答
4294 浏览

security - 如何不对密码进行硬编码?

在我的最后一个问题“用于存储机密的便携式数据库”中,到目前为止,最好的答案告诉使用 sqlite-crypt。

阅读 sqlite-crypt 文档,打开数据库的新参数是密码。当然,我不想硬编码密码,所以我在想什么是存储密码的最佳、简单和快速的方法?

0 投票
6 回答
8735 浏览

password-protection - 源代码管理中的密码存储

我们将所有应用程序和数据库密码以纯文本形式存储在源代码控制中。我们这样做是因为我们的构建/部署过程会生成所需的配置文件,并且还会进行需要这些密码的实际部署(即:对数据库运行 sql 需要您使用有效的凭据登录到数据库)。有没有人有类似的需求,您可以在不以纯文本形式存储密码的情况下实现此类功能?

0 投票
4 回答
1361 浏览

language-agnostic - 在网站访问之间安全地存储凭据

我正在建立一个网站,允许用户创建帐户并访问该网站的内容。我不希望用户在每次访问该站点时都登录,因此我计划将用户名和密码存储在 cookie 中——但是,我听说这是一种不好的做法,即使密码是经过哈希处理的饼干。

我应该遵循哪些“最佳实践”才能在访问我的网站之间安全地记住用户凭据?

0 投票
26 回答
83524 浏览

security - 我应该如何以合乎道德的方式处理用户密码存储以便以后进行明文检索?

随着我继续构建越来越多的网站和 Web 应用程序,我经常被要求以一种在用户遇到问题时可以检索到的方式存储用户的密码(或者通过电子邮件发送忘记的密码链接,通过电话等)我什么时候可以激烈地反对这种做法,我会做很多“额外的”编程来使密码重置和管理协助成为可能,而无需存储他们的实际密码。

当我无法对抗(或无法获胜)时,我总是以某种方式对密码进行编码,以便它至少不会以明文形式存储在数据库中——尽管我知道如果我的数据库被黑客入侵破解密码的罪魁祸首不会花太多时间,所以这让我很不舒服。

在一个完美的世界里,人们会经常更新密码,而不是在许多不同的网站上重复密码——不幸的是,我认识很多人拥有相同的工作/家庭/电子邮件/银行密码,甚至在他们需要帮助时免费提供给我。如果我的数据库安全程序由于某种原因失败,我不想成为他们财务死亡的责任人。

在道德和伦理上,我觉得有责任保护一些用户的生计,即使他们对待它的尊重要少得多。我确信有很多方法可以解决哈希哈希和不同的编码选项,但是当你必须存储它们时是否有一个单一的“最佳实践”?在几乎所有情况下,如果这对我处理细节的方式有任何影响,我都会使用 PHP 和 MySQL。

赏金的附加信息

我想澄清一下,我知道这不是您必须要做的事情,而且在大多数情况下拒绝这样做是最好的。然而,我并不是在寻找关于采用这种方法的优点的讲座,我正在寻找如果你采用这种方法的最佳步骤。

在下面的注释中,我指出主要面向老年人、智障或非常年轻的网站在被要求执行安全密码恢复程序时可能会让人们感到困惑。尽管在这些情况下我们可能会发现它简单而平凡,但某些用户需要额外的帮助,即让服务技术帮助他们进入系统或直接通过电子邮件发送/显示给他们。

在这样的系统中,如果用户没有获得这种级别的访问帮助,这些人口统计数据的流失率可能会阻碍应用程序,因此请记住这样的设置来回答。

谢谢大家

这是一个有趣的问题,有很多争论,我很喜欢。最后,我选择了一个既保留密码安全性(我不必保留纯文本或可恢复密码)的答案,又使我指定的用户群可以登录系统而没有我发现的主要缺点正常密码恢复。

与往常一样,出于不同的原因,我希望将大约 5 个答案标记为正确,但我必须选择最好的一个——其余的都得到了 +1。谢谢大家!

另外,感谢 Stack 社区中为这个问题投票和/或将其标记为收藏的每个人。我将获得 100 票赞成作为一种恭维,并希望这次讨论能够帮助与我有同样担忧的其他人。

0 投票
2 回答
310 浏览

passwords - 如何将用户的密码存储到另一个 Web 应用程序

我正在构建一个 Web 应用程序,向用户展示他们的 Gmail 活动的有趣可视化(他们发送电子邮件最多的人等)。显然,用户需要给我他的 Gmail 密码才能使用该应用程序,我想知道我应该如何存储它:

  1. 以明文形式存储 Gmail 密码。有风险!
  2. 根本不存储 Gmail 密码;强制用户每次要同步数据时输入。可能不方便!
  3. 在存储之前加密 Gmail 密码。我的应用程序的用户密码是关键。

(3)之类的东西似乎最好,但使用(3)我只能在用户登录时同步数据(因为我在任何其他时间都不知道他的应用程序密码),这并不理想。我更喜欢类似Mint.com的解决方案,用户可以随时单击按钮从 Gmail 同步数据,而无需重新输入密码(知道 Mint 如何在不存储您的银行密码的情况下完成此操作吗?)

0 投票
4 回答
331 浏览

php - 自动登录和密码存储

我写了一个简单的 PHP 脚本来登录我的手机提供商的网站,检查我的余额,如果余额太低,给我发一封电子邮件。我将脚本放在远程服务器上。

看来我必须将我的密码作为明文存储在脚本中,才能将其发送到登录页面。但是,我有点不愿意这样做......

有没有更安全的方法?

0 投票
2 回答
224 浏览

passwords - 保存登录密码

我正在编写一个从 IMAP 服务器检索电子邮件的桌面应用程序。为方便起见,用户可以选择保存登录屏幕的用户名和密码,因此他不必每次都输入。我可以将密码保存为纯文本吗?如果没有,那我该怎么做?

(注意这里不适合存储密码哈希,因为程序必须知道确切的用户名和密码才能自动登录到 IMAP 服务器。)

0 投票
3 回答
3033 浏览

php - 使用 HMAC+nonce 的 PHP 密码存储 - nonce 随机性重要吗?

几年前,我在 stackoverflow 上询问了如何使 PHP 密码存储安全。主要答案建议使用以下散列算法:

答案建议使用随机随机数。与简单的唯一随机数相比,随机随机数有什么优势吗?

例如,每个用户都可以拥有自己不变的 ID。但是,让我们假设用户 ID 是顺序的(使用 MySQL 的自动增量功能构建),因此不是随机的。用户 ID 是一个好的随机数还是随机性很重要?

现在,每个用户都可以选择一个用户名。每个用户都有自己不变的用户名,两个不同的用户不能有相同的用户名。用户名仍然不是随机的,但它们也不是连续的。用户名作为随机数是否足够好?会比使用用户 ID 更好吗?