相关疑难解决方法(0)

我应该如何道德地接近用户密码存储以便以后的明文检索?

随着我继续构建越来越多的网站和Web应用程序,我经常被要求以一种方式存储用户的密码,如果/当用户遇到问题时可以检索它们(要么通过电子邮件发送忘记的密码链接,请通过当我能够对抗这种做法时,我会做很多"额外"编程,以便在不存储实际密码的情况下进行密码重置和管理协助.

当我无法抗争(或无法获胜)时,我总是以某种方式对密码进行编码,以至于它至少不会以明文形式存储在数据库中 - 尽管我知道如果我的数据库被黑客攻击破坏密码的罪魁祸首并不需要太多,所以这让我感到不舒服.

在一个完美的世界里,人们经常更新密码,而不是在许多不同的网站上复制密码 - 不幸的是,我知道许多人拥有相同的工作/家庭/电子邮件/银行密码,甚至在需要帮助时自由地给我.如果我的数据库安全程序由于某种原因失败,我不想成为他们的财务终结负责人.

在道德和道德上,我觉得有责任保护一些用户的生活,即使他们以较少的尊重对待他们.我确信有许多途径可以用来腌制哈希和不同的编码选项,但是当你必须存储它们时,是否有一个"最佳实践"?在几乎所有情况下,我都使用PHP和MySQL,如果这对我应该处理细节的方式有任何不同.

附加信息Bounty

我想澄清一点,我知道这不是你想要做的事情,在大多数情况下拒绝这样做是最好的.但是,我并不是在寻找关于采取这种方法的优点的演讲我正在寻找采取这种方法时采取的最佳步骤.

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

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

谢谢大家

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

由于不同的原因,我一直有大约5个答案,但我必须选择最好的答案 - 所有其他答案都是+1.感谢大家!

此外,感谢Stack社区中的每个人都投票赞成这个问题和/或将其标记为最喜欢的.我以100票赞成票作为赞美,并希望这次讨论能够帮助其他与我有同样关切的人.

security password-storage password-encryption

1346
推荐指数
18
解决办法
7万
查看次数

忘记密码:实现忘记密码功能的最佳方法是什么?

我想知道在网站上创建忘记密码功能的最佳方法是什么.我见过很多,这里有几个或组合:

  • 密码问题/答案(1个或更多)
  • 使用新密码发送电子邮件
  • 在屏幕上给出新密码
  • 通过电子邮件确认:必须单击链接以获取新密码
  • 要求用户输入新密码的页面

您会在忘记密码功能中添加哪些组合或附加步骤?我想知道他们如何申请新密码以及他们最终如何获得密码.

我正在操作委托人,无法检索密码; 必须提供/生成新密码.

编辑我喜欢Cory所说的关于如果用户名存在不显示的内容,但我想知道要显示什么.我认为问题的一半是用户忘记了他们使用的电子邮件地址,显示某种"不存在"的消息是有用的.有解决方案吗

authentication passwords change-password forgot-password

51
推荐指数
3
解决办法
2万
查看次数

如何生成.NET 4 GUID?

我知道这里有很多问题以及雷蒙德的优秀(通常)帖子.但是,由于创建GUID的算法明显改变,我发现很难掌握任何最新信息.在MSDN似乎试图提供尽可能少的信息成为可能.

有关如何在.NET 4中生成GUID的已知信息?改变了什么,它如何影响安全性("随机性")和完整性("唯一性")?

我感兴趣的一个特定方面:在v1中,由于涉及时间戳和计数器,似乎几乎不可能在单个机器上再次生成相同的GUID.在v4中,情况不再如此(我被告知),因此在一台机器上获得相同GUID的机会增加了

.net guid .net-4.0

43
推荐指数
2
解决办法
2万
查看次数

如何使用ASP.NET Identity for ASP.NET MVC 5.0实现密码重置?

微软正在推出一个名为ASP.NET Identity新会员系统(也是ASP.NET MVC 5中的默认系统).我找到了示例项目,但是没有实现密码重置.

在密码重置主题上找到了这篇文章:使用一个ASP.NET身份实现用户确认和密码重置 - 痛苦或愉快,对我没有帮助,因为不使用内置密码恢复.

当我查看选项时,我认为我们需要生成一个重置令牌,我将发送给用户.用户可以使用令牌设置新密码,覆盖旧密码.

我找到了IdentityManager.Passwords.GenerateResetPasswordToken/ IdentityManager.Passwords.GenerateResetPasswordTokenAsync(string tokenId, string userName, validUntilUtc),但我无法弄清楚它可能意味着什么tokenId参数.

如何使用MVC 5.0在ASP.NET中实现密码重置?

.net c# asp.net-mvc identity password-recovery

28
推荐指数
2
解决办法
4万
查看次数

什么更安全?我是否应该向用户发送包含过期URL的电子邮件以重置密码,还是应该通过电子邮件发送新生成的密码?

当用户忘记密码时,我想知道什么是更安全的选择

  • 将随机生成的新密码发送到电子邮件地址(我的数据库中的所有电子邮件地址都已确认可用).

要么

  • 发送一封电子邮件,其中包含在特定时间范围内过期的链接,用户可以在该时间范围内重置密码.

除了后者使用额外的桌子之外,您认为更安全/更好的做法是什么?

security passwords reset-password

24
推荐指数
4
解决办法
2343
查看次数