Asp.net mvc 如何在MVC4中安全地显示自动生成的密码?

Asp.net mvc 如何在MVC4中安全地显示自动生成的密码?,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我已经准备好了我的大部分MVC4web应用程序。我甚至开发了密码自动生成算法。现在我被困在如何向用户显示此密码的问题上 处理注册过程的控制器将通过调用PasswordGenerator类中的方法来生成密码。我想使用一些jQuery在消息框中向用户显示这一点 我试着通过TempData和ViewBag传递它,但是可以在通过internet发送的HTML代码中看到密码。是否有任何方法可以在不通过internet显示密码的情况下安全地执行此操作 仅供参考,不可使用密码发送电子邮件。这是一个班级项目,不

我已经准备好了我的大部分MVC4web应用程序。我甚至开发了密码自动生成算法。现在我被困在如何向用户显示此密码的问题上

处理注册过程的控制器将通过调用
PasswordGenerator
类中的方法来生成密码。我想使用一些jQuery在消息框中向用户显示这一点

我试着通过
TempData
ViewBag
传递它,但是可以在通过internet发送的HTML代码中看到密码。是否有任何方法可以在不通过internet显示密码的情况下安全地执行此操作

仅供参考,不可使用密码发送电子邮件。这是一个班级项目,不打算做那么大的事情


任何帮助都将不胜感激

对于初学者来说,jQuery、
TempData
ViewBag
没有什么特别的地方对您有用。你通过互联网发送的任何东西都会通过互联网发送。如果攻击者控制了您用户的网络,那么他们可以截获javascript->WebApi调用或电子邮件,这与截获HTML页面一样简单

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

那么,在这种情况下我们能做些什么:-

  • 要采取的最明显的行动(也是我在您的案例中真正推荐的唯一行动)是启用SSL。这可以保护您的传输层不受大多数窥探的影响,并且没有实际的缺点。任何时候通过internet发送敏感数据时,都应该使用SSL。有些人会认为您应该始终使用SSL

  • 您可以通过使用javascript隐藏密码,并让用户执行一些操作来“揭开”密码(例如将鼠标指针悬停在目标上或按下按钮),从而减轻越肩式窥探。请注意,您的一些用户可能缺乏经验、已禁用或正在使用移动设备。如果我对你进行评估,我更关心的是你对可访问性的“小心”,而不是你自己的安全黑客

  • 通过超时用户会话,您可以在一定程度上缓解计算机未锁定攻击。你会看到这经常用于网上银行。请注意,这也有一个可用性成本-特别是我会担心的是,当用户正在寻找一支笔和一个贴子来写下你为他们生成的密码时,我会给他们计时


  • 一个无关紧要的问题是:-,错误地存储密码可能会带来灾难。确保你做得正确根据您的经验,我强烈建议不要使用您自己的密码存储系统,除非您的评估员特别要求您使用。此外,让服务器生成密码供最终用户记住是一个相当有争议的问题。如果你没有被特别要求,你应该考虑它是否是正确的方法,并确保你证明了它的正确性。对于这种规模的东西,您可能希望研究某种联合身份验证(例如“使用您的google帐户登录”),而不是处理密码

    当用户通过互联网访问你的网站时,你显然需要通过互联网向他发送任何你想显示的文本?我明白了。是否有任何隐藏字段或加密字段可用于此?这里的威胁模型是什么?您是否担心攻击者在传输过程中拦截消息,或者担心攻击者站在用户身后从屏幕上读取消息?@iaingallway,威胁是消息拦截。或者,从人们的粗心程度来判断,他们将电脑解锁,这样任何人都可以在他们不在的时候访问代码。我只是想小心一点。你永远不必担心从服务器发送到客户端的纯文本,它将以HTML格式显示。这里只有一件事是担心中间的攻击-意味着有人不是你想要的客户查看文本。相信我,这远远超出了你正在从事的课程项目的范围。那将是一个完全不同的班级