0

我有网站供客户使用 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

4

1 回答 1

0

如果您想允许“<”,您可以validateRequest="false"在 .aspx 页面的 Page 属性中进行设置。这应该导致.net 允许“<”。然后你就不会得到那个丑陋的死亡黄页,让你显示你漂亮的错误信息。

尽管出于安全原因,我不确定您是否要将 validateRequest 设置为 false,因为这将阻止 .Net 检查脚本注入攻击。这是需要考虑的事情。

看:

  1. http://www.asp.net/whitepapers/request-validation
  2. 在 ASP 中使用将 ValidateRequest 设置为 false
  3. Asp.Net Validaterequest 错误
于 2013-01-17T16:18:11.653 回答