IIS6无法获取type属性; JS替换危险的char

时间:2013-01-10 13:12:44

标签: javascript .net

我有网站供客户使用U / P登录,因为用户名必须是我通过错误日志注意到的电子邮件地址,有些用户不小心将其电子邮件粘贴为格式

<My Name> myemail@test.com

进入pwd字段。我只注意到这一点,因为.NET因为&lt;而引发了有关潜在危险的Request.Form的错误。在里面。我有一个可以替换“&lt;”的javascript函数使用“&lt;”(后面的空格不会导致错误)并且我想将它应用到pwd - 这将是不正确的,但至少他们会得到一个很好的“无效密码”消息而不是关于一个危险角色的大而丑陋的消息。当然,因为它是密码,除非我先将类型更改为文本,否则我无法进行替换。这是我在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'; 
}

这在我的IE本地计算机上正常运行,运行IIS7。但在IIS6上的生产中,我收到错误“无法获取类型属性”。有没有办法让javascript更改文本框类型,或者能够替换密码字段中的违规字符,或任何其他方式来避免危险的字符错误?我不能使用代码隐藏代码,因为危险的字符错误总是在执行回发代码之前显示。

感谢您的帮助。 -VG

1 个答案:

答案 0 :(得分:0)

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

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

请参阅:

  1. http://www.asp.net/whitepapers/request-validation
  2. Use of setting ValidateRequest to false in ASP
  3. Asp.Net Validaterequest False