为客户端无法复制的密码文本框设置默认密码

时间:2012-03-27 17:12:14

标签: c# asp.net passwords

是否可以将密码文本框文本设置为用户无法在其末端重现的文本?

是否有只能从服务器设置的特殊字符?

例如,一种方法是使用javascript来防止键入*,并将文本框文本设置为全*。但那很黑。

动机是能够告诉服务器用户是否完全更改了密码,而不是限制他们拥有所有*的密码。

4 个答案:

答案 0 :(得分:2)

,我认为不可能。

修改

为什么不使用不符合密码长度,允许字符等规则的默认密码? (即使您允许所有字符,允许使用单字符密码也不是一种选择,是吗?)

答案 1 :(得分:2)

我同意不能指定用户不能自己输入的字符;但是,普通用户输入某些字符可能非常困难。

更详细;在Windows中使用标准的美国104键键盘,可以通过按住Alt并使用小键盘键入字符代码来输入Unicode字符代码。因此,有人可以输入一个字符,该字符不会出现在键盘上,也不能使用修饰符和字母键的组合键入。地球上99%的计算机用户都不知道这是可能的,即使剩下的1%也可能需要查找特定非标准字符的代码。

现在,使用拉丁字符但带有重音符号和其他修改的其他语言具有更易于访问的修饰键组合,允许用户键入重音字母,就像英语使用大写字母一样。显然,使用不同字符集的区域中的用户具有可以通过单个按键键入非常深奥的符号的键盘。其中一种文化中的用户可以更轻松地访问美国104位关键用户难以使用的字符。

因此,无法在代码中指定Unicode代码页中的字符,用户无法在键盘上再现该字符。但是,他们必须确切地知道正在使用哪个字符及其Unicode代码才能重现它。

答案 2 :(得分:1)

您可能想要使用TAB字符(即" \ t")。但我确信有更好的方法去做你想做的事情。

修改

我想我明白你现在要求的是什么。

这应该做你想要的。这是javascript,但它真的很简单。

<input type="password" name="userpass" value="          " onfocus="if(this.pwclick == undefined){ this.default = this.value; this.value=''; this.pwclick = 1;}" onblur="if(this.value == ''){this.value = this.default;this.pwclick = undefined;}" />

然后在后端执行以下操作,即使用户关闭了javascript,也会导致javascript兼容。

if(userpass.Trim().Length > 0{
  # actions to change the user's password
}

答案 3 :(得分:0)

只需添加另一个隐藏字段,该字段在初始化密码文本框时使用相同的文本进行初始化。然后,如果它们在提交时仍然相同,则给它们一个错误。