如何在 MVC 4 中安全地显示自动生成的密码?

How to securely show an auto-generated password in MVC 4?

我的大部分 MVC 4 Web 应用程序已准备就绪。我什至开发了密码自动生成算法。现在我不知道如何向用户显示此密码。

处理 注册 过程的控制器将通过调用 PasswordGenerator class 中的方法来生成密码。我想使用一些 jQuery.

在消息框中向用户显示此内容

我试过通过 TempDataViewBag 传递密码,但可以在通过互联网发送的 HTML 代码中看到密码。有没有办法在不通过互联网显示密码的情况下安全地执行此操作?

仅供参考,发送带有密码的电子邮件不是一种选择。这是一个 class 项目,不是为那种规模的东西而设计的。

如有任何帮助,我们将不胜感激。

对于初学者来说,jQuery、TempDataViewBag 没有什么特别之处,但对您有用。你知道的,你通过互联网发送的任何东西都会通过互联网发送。如果攻击者控制了您的用户的网络,那么他们可以拦截 javascript->WebApi 调用或电子邮件,就像拦截 HTML 页面一样容易。

更一般地说,您应该了解安全性、可用性和开发成本之间的权衡。总的来说,没有 "secure" 这样的东西。有些威胁您可以缓解,有些攻击您可以而且应该防御,但也有您可以接受的风险级别,具体取决于您的服务性质。

那么,遇到这种情况我们能做些什么:-

  1. 最明显的行动(也是我真正推荐的唯一行动)是启用 SSL。这可以保护您的传输层免受大多数窥探,并且没有任何实际缺陷。任何时候通过 Internet 发送敏感数据时,都应该使用 SSL。有些人会争辩说你应该使用 SSL always.

  2. 您可以通过使用 javascript 隐藏密码并让用户对 "uncover" 执行某些操作(例如悬停鼠标指针悬停在目标上,或按下按钮)。请注意,您的某些用户可能缺乏经验、有残疾或使用移动设备。如果我要评估你,我会更关心你 "being careful" 关注可访问性,而不是关注你自己的安全黑客!

  3. 您可以通过使用户会话超时来减轻计算机未锁定攻击。您会看到它经常与网上银行一起使用。请注意,这也有可用性成本 - 特别是我会担心用户在寻找笔和 post 时超时 - 它会写下您为他们生成的密码!

切线说明:- Storing passwords properly is hard,不正确地存储密码可能是灾难性的。确保你做的正确! 以您的经验水平,我强烈建议您不要使用自己的密码存储系统,除非您的评估员特别要求您这样做。此外,让服务器生成密码供最终用户记住是相当重要的有争议的。如果你没有被特别要求这样做,你应该考虑它是否是正确的方法并确保你证明它是正确的。对于这种规模的事情,您可能想要研究某种联合身份验证(例如 "sign in with your google account")而不是完全处理密码。