【发布时间】:2016-10-25 19:59:16
【问题描述】:
这是什么巫术?
文本框类型的密码如何在不绑定的情况下知道每个用户的密码长度?
我今天第一次偶然发现这种现象,对发生了什么感到惊讶和困惑?
我试图通过创建一个独立页面来消除用户错误,只是为了测试这一点。除了基本页面结构之外,这就是页面上的所有代码。
ASP.NET
<asp:TextBox ID="txtUsername" runat="server" />
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password"/>
VB.NET
Using con As New SqlConnection
con.ConnectionString = ConfigurationManager.ConnectionStrings("Con").ConnectionString
Using cmd As New SqlCommand("TM.sp", con)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@UserID", SqlDbType.Int).Value = Request.QueryString("UserID")
con.Open()
Using sdr As SqlDataReader = cmd.ExecuteReader()
While sdr.Read()
txtUsername.Text = sdr("Username")
End While
End Using
End Using
End Using
在每个实例中,txtPassword 文本框都以隐藏的type="password" 格式填充正确长度的密码。
我没有绑定密码,也没有在存储过程中请求它,但是它与用户名一起存储在数据库中
如果我更改密码文本框上的文本模式或不输出用户名字段,则不再输出密码。
有人可以解释这种行为并指出相关规范吗?
【问题讨论】:
-
这可能是浏览器自动完成功能
-
@the_lotus 是对的,只需将此添加到密码标签
autocomplete="off"即可验证。它将不再填满 -
浏览器可让您保存密码。
-
@the_lotus 我认为你是对的。有一瞬间,我以为发生了某种巫术。请问你能发布这个效果的答案吗?我很困惑,因为这是一个用于创建用户名和密码的用户表,而不是登录页面,但表单已经从登录页面记住了它。
标签: c# asp.net vb.net webforms passwords