ASP.NET无需询问即可知道我的密码?

时间:2016-06-23 12:59:17

标签: c# asp.net vb.net webforms passwords

这巫术是什么?

文本框类型密码如何知道每个用户的密码长度而不受约束?

我今天第一次偶然发现了这种现象,并对发生的事情感到惊讶和疑惑?

我试图通过创建一个独立的页面来测试用户错误,以便对此进行测试。基本页面结构除此之外是页面上的所有代码。

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"格式的正确长度密码填充。

我没有绑定密码,也没有在存储过程中请求密码,但它与用户名一起存储在数据库中

如果我在密码文本框中更改Textmode或者不输出用户名字段,则不再输出密码。

有人可以解释这种行为并指向相关规范吗?

1 个答案:

答案 0 :(得分:1)

这看起来像是您的浏览器自动填充功能。就像Vishnu Prasad所说,try adding autocomplete="off"作为你控制的属性,如果你想要移除那个功能。