【发布时间】:2011-09-26 07:19:04
【问题描述】:
我有一个带有两个密码字段的典型注册表单。
<form>
<%= Html.TextBox("Email", null) %>
<%= Html.Password("password", null) %>
<%= Html.Password("confirmPassword", null) %>
<input type='submit' />
</form>
如果表单验证失败并重新显示,文本字段将保留其值,但密码字段始终为空白。
为什么密码字段不应该保留它们的值?更重要的是,我有什么理由不应该覆盖这种行为吗?
我觉得这种行为会降低可用性,并且希望密码字段的行为方式与文本框字段相同——在存在验证错误时保留输入的值。
我正在使用 ASP.NET MVC,但这个问题更多地涉及可用性和安全性。我知道我看到的是预期行为,查看 Password(...) 方法表明它明确忽略了 ModelState 中的值。
【问题讨论】:
-
这不仅仅是 MVC 特有的东西。这似乎是整个网络的普遍做法。每当您通过某些注册表单但犯了一些错误时,当该表格返回给您时,您的密码就消失了。我想你确实有一个有效的问题,为什么是......
-
+1 非常有趣。注册失败时重新输入密码让我很恼火。
-
我想知道这是否是一种安全做法。我想有可能返回的带有填充密码字段的页面可能会缓存在客户端上,并且窥探本地缓存的人可能会发现密码。
-
@GWB:有趣,缓存。可能的答案!
-
@Platinum Azure 好吧,好的。如果您愿意,您仍然可以只收听出站流量,不将其发送到入站不会降低收听流量的能力
标签: c# html asp.net-mvc passwords validation