从客户端检测到有潜在危险的Request.Form
初学.net的朋友可能经常遇见 从客户端检测到有潜在危险的Request.Form 的问题。本人同样也是。遇到问题不能解决的话一般都是上网寻求帮助。而我在网上经常看到的解决方法是设置validateRequest=false,来禁用这个。说实话我刚开始用这方法的时候,“从客户端检测到有潜在危险的Request.Form“的错误就不在出现了。输入<aa>之类的符号也没有事了,还用经常使用。
其实这个方法是不对的,如果你禁用了这个功能,但是自己却不手动去过滤那些非法字符的话,那网站的安全性将降低。当初我禁用丢这个功能,原因无非就是不想看到类似于”从客户端检测到有潜在危险的Request.Form“的错误,而且我当初也不知道我禁用掉的是什么功能。用页面不报错的方式来体现自己做的网站“安全性”。
报出这类错误其实是.net的一个安全机制,用来防止跨站脚本攻击。不过你非要输入<a>之类的话,禁用此功能我就不多说什么了。如果是因为不喜欢这种报错方式而禁用掉该功能,那方法就错了。在页面上显示这类错误的原因是因为用户没有进行异常处理,错误就直接在页面上显示了。捕捉这类异常的代码很简单,在页面加上一下代码就可以了。
protected void Page_Error(object sender, EventArgs e) { Exception ex = Server.GetLastError(); if (ex is HttpRequestValidationException) { Response.Write("非法字符"); Server.ClearError(); // 如果不ClearError()这个异常会继续传到Application_Error()。 } }
写完之后,当用户输入<a>这类的符号时,就不会报出 从客户端检测到有潜在危险的Request.Form 的错误提示了。而是执行if中的代码。输出"非法字符”。
这是在网上看了别人的博客后得到的代码,在这里就分享一下,希望大家,也希望自己在学习编程的时候不要盲目相信网上的答案,理解实质的东西才是最重要的。

浙公网安备 33010602011771号