MVC:从页面源看到密码值

时间:2016-03-24 05:46:45

标签: asp.net-mvc asp.net-mvc-3

我有一个非常简单的密码框绑定到一个属性。当用户编辑现有密码时,它显示为“.......”我们都知道。代码是:

@Html.PasswordFor(m => m.Password, new { value = Model.Password })

但是,如果您单击并查看“查看页面源”,您将看到纯文本密码,这似乎会引起安全问题。反正有没有隐藏它?非常感谢!

2 个答案:

答案 0 :(得分:2)

你可以做些什么。由于它是用户输入,因此必须在表单提交之前以某种方式指定其值。客户端加密/解密很可能无法正常工作,因为客户端代码实际上无法得到保护。因此,如果您使用客户端加密(对称或非对称),则可以访问页面源的黑客能够查看加密/解密算法或将密码值替换为他知道的内容。因此,正如我所说,如果黑客在用户输入密码时可以访问页面的查看源,那么您无能为力。即使是通过Web发送敏感数据的PCI兼容应用程序(例如信用卡号)也会将原始用户输入发送到某个远程安全标记化服务器,该服务器生成将在后续请求中使用的标记。Html.PasswordFor是不是将密码显示为扁平字符串,如果是这样,如果你背后的某人在你输入密码时看到显示器,他就赢得了无法看到的密码。提交密码时必须做的是使用https以防止中间人攻击。当然,您不应该在服务器上存储普通用户密码(只有他们的哈希值),这样就不会泄露它们。

答案 1 :(得分:0)

当您将视图与模型绑定并从控制器设置值时。 它只是呈现html及其所有值。这是密码的值是可见的。 @HTML.PasswordFor只是将密码呈现给浏览器。您需要使用加密/解密来保存和检索密码,以确保它是安全的。