从客户端检测到有潜在危险的Request.Form值
从客户端检测到有潜在危险的Request.Form值
从客户端检测到有潜在危险的Request.Form值
解决方案一:
在.aspx文件头中加入这句:
<%@ Page validateRequest="false" %>
解决方案二:
修改web.config文件:
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
因为validateRequest默认值为true。只要设为false即可。
解决方案三:
当然,这样只能是让界面好看一些,要想抵制注入,还得从过滤上做足功夫。
然后,还是有不禁用validateRequest的方法的
正确的做法是在你当前页面添加Page_Error()函数,来捕获所有页面处理过程中发生的而没有处理的异常。然后给用户一个合法的报错信息。如果当前页面没有Page_Error(),这个异常将会送到Global.asax的Application_Error()来处理,你也可以在那里写通用的异常报错处理函数。如果两个地方都没有写异常处理函数,才会显示这个默认的报错页面呢。
举例而言,处理这个异常其实只需要很简短的一小段代码就够了。在页面的Code-behind页面中加入这么一段代码:
protected void Page_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
if (ex is HttpRequestValidationException)
{
Response.Write("请您输入合法字符串。");
Server.ClearError(); // 如果不ClearError()这个异常会继续传到Application_Error()。
}
}
解决方案四:
在Global.asax文件的Application_Error()来处理。这样在整个网站中都生效。
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
Exception ex = Server.GetLastError();
if (ex is HttpRequestValidationException)
{
Response.Write("请您输入合法字符串。");
Server.ClearError(); // 如果不ClearError()这个异常会继续传到Application_Error()。
}
}
五、MVC中解决方案:
1.在页面aspx中
<%@ Page ValidateRequest="false" >
2.在controller中action添加
[ValidateInput(false)]
public ActionResult Edit()
{
this.ValidateRequest = false;
retrun View();
}
3.在网站web.config
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
原因是:在.net 4.0 环境下请求验证范围扩大到所有请求。从BeginRequest阶段就开始HttpRequest,不仅仅是页面文件(.aspx),还包含webservice以及http Handlers。
热门推荐
- mysql主键为什么用varchar(Mysql中varchar类型一些需要注意的地方)
- vue双向数据绑定js如何实现(纯JS如何实现vue.js下的双向绑定功能)
- 最轻量web服务器(免费开源的几款Web服务器软件简介)
- jQuery实现tab切换
- laravel8 前后端分离方案(laravel 根据不同组织加载不同视图的实现)
- 如何用xampp新建数据库(Windows系统下XAMPP的安装配置图文教程)
- 百度网速买的五分钟加速在哪里(为何用了百度云加速 服务器负载还很大)
- html5导航栏怎么设计(html5 横向滑动导航栏的方法示例)
- zabbix基本监控配置(zabbix使用教程+受监控服务器的添加安装教程)
- python经典算法(浅谈python常用程序算法)