我有网站供客户使用 U/P 登录,因为用户名必须是电子邮件地址,我通过我们的错误日志注意到一些用户不小心将他们的电子邮件格式粘贴
<My Name> myemail@test.com
进入密码字段。我只注意到这一点,因为 .NET 由于其中的 < 引发了有关潜在危险的 Request.Form 的错误。我有一个javascript函数可以用“<”替换“<”(它后面的空格不会导致错误),我想将它应用到密码上——无论如何这都是不正确的,但至少他们会得到一个很好的“无效密码”消息,而不是一个关于危险角色的大而丑陋的消息。当然,由于它是密码,除非我先将类型更改为文本,否则我无法进行替换。这是我在javascript中尝试过的:
function replaceSuspectChars(that)
{
that.type = 'text';
//Find '<' not followed by a space, and replace it with a '< '
var text = that.value;
text = text.replace(/</g, "< ");
text = text.replace(/< /g, "< ");
that.value = text;
that.type = 'password';
}
这在运行 IIS7 的 IE 本地机器上运行良好。但在 IIS6 上的生产中,我收到错误“无法获取类型属性”。有没有办法让 javascript 更改文本框类型,或者能够替换密码字段中的违规字符,或者任何其他方式来避免这种危险的字符错误?我不能使用代码隐藏代码,因为危险字符错误总是在执行回发代码之前显示。
谢谢你的帮助。-VG