我有网站供客户使用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
答案 0 :(得分:0)
如果你想允许“&lt;”您可以在.aspx页面的Page属性中设置validateRequest="false"
。这应该导致.net允许“&lt;”。然后你就不会得到那个丑陋的死亡黄页,让你显示你的错误信息。
虽然出于安全原因,我不确定您是否希望将validateRequest设置为false,因为这会阻止.Net检查脚本注入攻击。这是需要考虑的事情。
请参阅: