C# 以安全的方式设置密码文本框值

C# 以安全的方式设置密码文本框值,c#,asp.net,textbox,C#,Asp.net,Textbox,是否有任何安全的方法可以在密码模式下设置文本框的值 我有一个带有密码文本框的自定义登录表单: 在页面加载时,我想把一些记忆中的密码放在那里,这些密码是我从cookie中用代码解密的 我找到的95%的答案是设置文本框值,比如: tbPassword.Attributes[“value”]=“ThePassword” 但是,这并不是最安全的方式,因为它会生成以下HTML代码,在查看源代码时可见,其中密码以纯文本形式存储: <input id="tbPassword" type="passwo

是否有任何安全的方法可以在密码模式下设置文本框的值

我有一个带有密码文本框的自定义登录表单:

在页面加载时,我想把一些记忆中的密码放在那里,这些密码是我从cookie中用代码解密的

我找到的95%的答案是设置文本框值,比如:
tbPassword.Attributes[“value”]=“ThePassword”

但是,这并不是最安全的方式,因为它会生成以下HTML代码,在查看源代码时可见,其中密码以纯文本形式存储:

<input id="tbPassword" type="password" value="ThePassword" name="ctl00$cpMainContentParent$tbPassword">
这要好得多,因为该值在ViewSource中不可见,而密码在页面上的jQuery脚本中可见

我还尝试注册客户端脚本并运行它,但由于我无法“注销”它,所以结果与普通jQuery sript相同


您知道设置该值而不在源代码中显示该值的解决方法吗?

不要在输入元素中设置密码。相反,将其设置为随机值或固定值(如果您希望指示设置了密码),否则为空。正如您所说,这意味着密码在页面源代码中可见。若要处理更改密码的操作,请在密码值更改时设置一个标志,以便处理代码(服务器端或客户端)知道何时修改密码。

不要在输入元素中设置密码。相反,将其设置为随机值或固定值(如果您希望指示设置了密码),否则为空。正如您所说,这意味着密码在页面源代码中可见。要处理更改密码,请设置一个标志,如果密码值为,则处理代码(服务器端或客户端)会知道密码何时被修改。

正如Bob的评论所说,整个概念是有缺陷的。如果cookie有效,则跳过密码提示。如果它无效,则您没有任何内容可自动填充

也就是说,您无法直接填写文本框,因为文本框无法以某种方式被截取。即使您通过加载后的AJAX调用来填充它,用户仍然可以通过类似FireBug的东西来查看内容。这是web浏览器固有的特性——浏览器本身没有什么是安全的,因为浏览器需要理解它才能呈现它


如果您真的想这样做,一个选项是计算包含时间戳(或其他某个一次性值)的密码的自定义哈希,并将文本框设置为该值。您需要接受标准密码和哈希值都是有效的,但哈希值不能重复使用,因此用户看到它也无所谓。

正如Bob的评论所说,整个概念是有缺陷的。如果cookie有效,则跳过密码提示。如果它无效,则您没有任何内容可自动填充

也就是说,您无法直接填写文本框,因为文本框无法以某种方式被截取。即使您通过加载后的AJAX调用来填充它,用户仍然可以通过类似FireBug的东西来查看内容。这是web浏览器固有的特性——浏览器本身没有什么是安全的,因为浏览器需要理解它才能呈现它


如果您真的想这样做,一个选项是计算包含时间戳(或其他某个一次性值)的密码的自定义哈希,并将文本框设置为该值。您需要接受标准密码和哈希值都是有效的,但哈希值不能重复使用,因此用户看到它也无所谓。

冒着听起来愚蠢的风险,故意设置密码本身就不安全吗?这样做的目的是让用户验证自己的身份。永远不要以方便的名义保护安全。无论提出什么解决方案,我认为拦截器只需要查看页面源代码或执行一些琐碎的数据包嗅探来破坏您的安全性。您是否正在尝试实现某种“记住我的密码”功能?如果是这样,将密码存储在cookie中、在服务器上读取cookie、解密并将其发送回浏览器以便浏览器可以将其提交到服务器似乎不是一种很好的方法。我非常同意上面的Bob。。。无论如何,有一个问题是:如果你在cookie中加密了pwd,为什么不直接从中验证用户?或者只是实现一个“记住我”复选框?如果你在cookie中存储了密码,那你就错了。如果你的密码可以被解密,那你就做错了。冒着听起来愚蠢的风险,难道不是故意将密码设置为不安全的吗?这样做的目的是让用户验证自己的身份。永远不要以方便的名义保护安全。无论提出什么解决方案,我认为拦截器只需要查看页面源代码或执行一些琐碎的数据包嗅探来破坏您的安全性。您是否正在尝试实现某种“记住我的密码”功能?如果是这样,将密码存储在cookie中、在服务器上读取cookie、解密并将其发送回浏览器以便浏览器可以将其提交到服务器似乎不是一种很好的方法。我非常同意上面的Bob。。。无论如何,有一个问题是:如果你在cookie中加密了pwd,为什么不直接从中验证用户?或者只是实现一个“记住我”复选框?如果你在cookie中存储了密码,那你就错了。如果你的密码可以解密,那你就错了。
$("#tbLogin").val("ThePassword");