我已准备好大部分 MVC 4 Web应用程序。我甚至开发了密码自动生成算法。现在我不知道如何向用户显示此密码。
处理注册进程的控制器是通过调用PasswordGenerator
类中的方法生成密码的控制器。我想使用一些jQuery在消息框中向用户显示这个。
我尝试通过TempData
和ViewBag
传递它,但密码可以在通过互联网发送的HTML代码中看到。无论如何在没有通过互联网显示密码的情况下安全地执行此操作?
仅供参考,无法选择发送包含密码的电子邮件。这是一个类项目,不适合那么大的事情。
任何帮助将不胜感激。
答案 0 :(得分:2)
对于初学者来说,jQuery,TempData
或ViewBag
对您有用,没有什么特别之处。你通过互联网发送的任何内容都会通过互联网发送。如果攻击者可以控制您用户的网络,那么他们就可以拦截javascript-> WebApi调用或电子邮件,就像他们拦截HTML页面一样容易。
更一般地说,您应该了解安全性,可用性和开发成本之间的权衡。总的来说,没有"安全"。您可以减轻威胁并且可以防御特定攻击,但是根据服务的性质,您也可以接受一定程度的风险。
那么,在这种情况下我们能做些什么: -
要采取的最明显的行动(也是我真正建议的唯一一个)是启用SSL。这可以保护您的传输层免受大多数窥探,没有任何实际缺点。每次通过互联网发送敏感数据时,都应使用SSL。有人会说你应该使用SSL 总是。
您可以通过使用javascript隐藏密码,并让用户执行某些操作来解除隐藏式的窥探类型。它(例如将鼠标指针悬停在目标上,或按下按钮)。请注意,您的某些用户可能缺乏经验,已禁用或使用移动设备。如果我在评估你的话,我会更关心你是谁?小心谨慎"关于可访问性而不是关于手动编写自己的安全攻击!
您可以通过超时用户会话来缓解计算机左侧解锁攻击。您会看到这经常与网上银行一起使用。请注意,这也具有可用性成本 - 特别是我会关注用户在寻找笔时的时间安排,以及用它来记下为您生成的密码!
切线说明: - Storing passwords properly is hard,并且不正确地存储密码可能是灾难性的。确保你正确地做到了! 根据您的经验,我强烈建议不要推销您自己的密码存储系统,除非您的评估员特别要求您这样做。此外,让服务器为最终用户生成密码以便记住是非常有争议的。如果你没有被特别要求,你应该考虑它是否是正确的方法,并确保你证明它是正确的。对于这种规模的东西,您可能希望查看某种联合身份验证(例如"使用您的Google帐户登录")而不是处理密码。