【发布时间】:2012-09-27 14:11:22
【问题描述】:
是否有任何安全方法可以在密码模式下为文本框设置值?
我有一个带有密码文本框的自定义登录表单:<asp:TextBox ID="tbPassword" runat="server" TextMode="Password"></asp:TextBox>
在页面加载时,我想放一些我在 cookie 的代码隐藏中解密的记住密码。
我发现 95% 的答案是设置文本框值,例如:tbPassword.Attributes["value"] = "ThePassword";
但是,这不是最安全的方式,因为它会生成以下 HTML 代码,在查看源代码时可见,其中密码以纯文本形式存储:
<input id="tbPassword" type="password" value="ThePassword" name="ctl00$cpMainContentParent$tbPassword">
我用 jQuery 尝试了不同的方法,设置值:
$("#tbLogin").val("ThePassword");
更好,因为该值在查看源代码中不可见,但密码在页面上的 jQuery 脚本中可见...
我也尝试注册客户端脚本并运行它,但由于我无法“取消注册”它,所以结果与普通的 jQuery 脚本相同...
您知道设置该值而不在源代码中显示它的任何解决方法吗?
【问题讨论】:
-
冒着听起来很愚蠢的风险,故意设置密码的任何尝试从本质上来说是不安全的吗?这个想法是挑战用户对他/她自己进行身份验证。 切勿以方便的名义牺牲安全性。无论提出什么解决方案,我认为拦截器只需要查看页面源或进行一些微不足道的数据包嗅探即可破坏您的安全性。
-
您是否正在尝试实现某种“记住我的密码”功能?如果是这样,将密码存储在 cookie 中,读取服务器上的 cookie,解密并将其发送回浏览器,以便浏览器可以将其提交给服务器,这似乎不是一个好方法。
-
我非常同意上面 Bob 的观点......无论如何,有一个问题要解决:如果您将 pwd 加密在 cookie 中,为什么不直接从中验证用户身份?或者只是实现一个“记住我”复选框?
-
如果您在 cookie 中存储了密码,那么您做错了。如果你的密码可以被解密,那你就错了。