c# - ASP.NET 无需询问就知道我的密码?

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

这是什么巫术?

文本框类型的密码如何在不绑定(bind)的情况下知道每个用户的密码长度?

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

我试图通过创建一个独立的页面来测试这个来消除用户错误。除了基本的页面结构,这是页面上的所有代码。

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

我没有在任何地方绑定(bind)密码,也没有在存储过程中请求它,但是它与用户名一起存储在数据库中

如果我更改密码文本框上的文本模式或不输出用户名字段,则不再输出密码。

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

最佳答案

这看起来像您的浏览器自动完成功能。正如 Vishnu Prasad 所说,try adding autocomplete="off"如果您想删除该功能,则作为控件的属性。

关于c# - ASP.NET 无需询问就知道我的密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37992382/

相关文章:

c# - 在没有管理员权限的情况下安装 MSBuild 15(Microsoft Build 工具)?

C# ASP.Net 找不到类型或命名空间名称 'iAnywhere'

asp.net - 如何在网页中断行?

vb.net - 数字签名安装盾安装程序

c# - 正则表达式匹配不以空格开头、包含或结尾且非空字符串

c# - 以编程方式将 TortoiseSVN 与 C# 或其相关进程一起使用,以检查存储库是否是最新的

c# - 具有无限参数的参数化 SQL 查询

vb.net - 从 Excel 工作簿获取ActiveObject

c# - 扩展方法找不到类型的定义

c# - 泛型类的依赖注入(inject)