【问题标题】:How bad is it to set password text设置密码文本有多糟糕
【发布时间】:2011-03-23 23:48:36
【问题描述】:

对于<input type="password" />

在 ASP.net 中:

PasswordField.text = RawPasswordString;

这不起作用,但可以通过以下方式规避:

PasswordField.Attributes.Add("value", RawPasswordString);

我这样做是为了当注册表单失败时,如果密码有效,他们就不需要重新输入密码,这在某些网站上让我非常恼火。我们有一个需要服务器验证的 CAPTCHA 字段,所以当它失败时(最有可能失败的字段),我不希望他们输入正确的,但随后密码失败,因为它们已清除,这意味着他们必须输入验证码again.

安全原因是什么,如果此页面使用 HTTPS,可以吗?如果它是在没有缓存的 HTTPS 上,我还应该注意什么?

【问题讨论】:

  • 如果您使用的是 HTTPS,它不会那么糟糕。新问题是密码应该是一种散列方式。换句话说,如果用户忘记了原始密码,您将无法找回原始密码。

标签: asp.net security passwords save user-input


【解决方案1】:

绝对不是。浏览器仍然可以缓存结果,并且有人可以查看缓存并获取密码。

【讨论】:

  • 啊没有考虑缓存,如果我禁用页面缓存可以吗?我想捕获尽可能多的注册,而在其他网站上,我已经非常沮丧,我之前已经放弃了。
  • 我仍然建议不要这样做。
  • 为什么不取消完整的回帖并使用 jQuery Validation 之类的东西?
  • @Daniel,是的,你是对的,对不起,我正在逐步增强它,并且可能对禁用的 JS 过于信任,我会删除它,感谢您的建议
  • @TomGullen - 即使您禁用页面缓存,也不能确保浏览器不会缓存。某些恶意软件会重新启用浏览器缓存...不要信任用户端的任何内容。