[牛腩]如何关闭.net framework4.0的请求验证

敲牛腩的时候,点击运行提示:从客户端中检测到有潜在危险的 Request.Form 值,感觉自己代码敲的并没有问题,于是开始各种查,下面分享一下我对此进行的研究。

为什么会报这个错误?

在 Web 应用程序中,要阻止依赖于恶意输入字符串的黑客攻击,约束和验证用户输入是必不可少的。跨站点脚本攻击就是此类攻击的一个示例。其他类型的恶意数据或不需 要的数据可以通过各种形式的输入在请求中传入。通过在应用程序中的较低级别限制允许通过的数据类型,就可以阻止不希望的事件,即使当使用代码的程序员没有 恰当地使用合适的验证技术时也是如此。

当请求验证检测到潜在的恶意客户端输入时,会引发此异常来中止请求处理。请求中止能够指示危害您的应用程序安全的企图,例如跨站点脚本攻击。以上为系统报错信息。原因是,在 ASP.NET 1.1 中,@Page 指令上的 ValidateRequest 属性被打开后,将检查以确定用户没有在查询字符串、Cookie 或表单域中发送有潜在危险性的 HTML 标记。如果检测到这种情况,将引发异常并中止该请求。该属性默认情况下是打开的;您无需进行任何操作就可以得到保护。如果您想允许 HTML 标记通过,必须主动禁用该属性。

什么是 请求验证?

validateRequest=“false”是关闭验证

requestValidationMode 有两个值:

2.0 仅对网页启用请求验证。是启用还是关闭取决于 validateRequest。

4.0 默认值。任何 HTTP 请求都会启用请求验证,也就是说不光是网页,还包括 Cookie 等。此时强制启用,不管 validateRequest 为何值。

如何解决这个错误?

ASP.NET中的请求验证特性提供了某一等级的保护措施防止XSS攻击,之前版本的ASP.NET的请求验证是默认启动的,但是他仅仅应用于ASP.NET页面中(.aspx文件和.aspx.cs文件)。

而在ASP.NET4中,请求验证默认对所有类型的请求启动,因为它在BeginRequest被调用之前启动,结果就是对所有资源的请求都要经过请求验证,而不仅仅在.aspx文件和他们的类文件中,甚至包括web service和自定义的httphandler。同样,在自定义httpmodules读取http请求的时候,同样要经过请求验证。由于 requestValidationMode="4.0" 是强制启用,所以我们会发现在 .NET Framework 4.0 中仅靠设置 validateRequest
是关闭不了请求验证的,还得将 requestValidationMode 设置为 2.0。

所以我们应该在配置文件中设置如下属性:

<system.web>

<compilation debug="true" targetFramework="4.0"/>

<httpRuntime requestValidationMode="2.0" />

<pages validateRequest="false"></pages>

</system.web>

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 02:15:07

[牛腩]如何关闭.net framework4.0的请求验证的相关文章

IIS注册Framework4.0

打开iis,确认一下framework4.0是否已经安装. 开始->控制面板->管理工具->Internet信息服务->应用程序池(左边栏)->观察右边主界面.net framework版本栏,是否已经安装过了.   打开dos命令窗口,打开窗口时请以管理员的身份打开. 开始->输入cmd->找到cmd.exe->右键cmd.exe->以管理员身份打开(弹出菜单)->打开dos命名窗口.   打开framework4.0所在目录,一般情况下在此目

ASP.NET 4.0请求验证报错

修改方法如下: 在web.config方法中的httpRuntime标记中添加 requestValidationMode="2.0" <system.web>     <httpRuntime  />     <pages validateRequest="false"></pages></system.web>  </system.web> 深入: validateRequest="

AFNetwork 2.0在请求时报错code=-1016 和 3840

在进行网络请求时出现-1016 是因为只支持 text/json,application/json,text/javascript 你可以添加text/html 一劳永逸的方法是 在 AFURLResponseSerialization.h 里面搜索 self.acceptableContentTypes 然后 在里面 添加 @"text/html",@"text/plain" 这样就可以解决-1016的错误了 但是随之而来的是3840错误 Error Domain

怎么解决xp系统不能安装NET Framework4.0?

第一步: 如果是XP系统: 1.开始——运行——输入cmd——回车——在打开的窗口中输入net stop WuAuServ 2.开始——运行——输入%windir% 3.在打开的窗口中有个文件夹叫SoftwareDistribution,把它重命名为SDold 4.开始——运行——输入cmd——回车——在打开的窗口中输入net start WuAuServ 第二步: 1.开始——运行——输入regedit——回车 2.找到注册表,HKEY_LOCAL_MACHINE\SOFWARE\Micros

xp不能安装NET Framework4.0解决方法

最近客户电脑安装不了.net4.0环境,在网上找到下列方法,不知能不能解决问题. 第一步: 如果是XP系统: 1.开始--运行--输入cmd--回车--在打开的窗口中输入net stop WuAuServ 2.开始--运行--输入%windir% 3.在打开的窗口中有个文件夹叫SoftwareDistribution,把它重命名为SDold 4.开始--运行--输入cmd--回车--在打开的窗口中输入net start WuAuServ 第二步: 1.开始--运行--输入regedit--回车

解决XP系统不能安装Net.Framework4.0

1.开始——运行——输入cmd——回车——在打开的窗口中输入net stop WuAuServ 2.开始——运行——输入%windir% 3.在打开的窗口中有个文件夹叫SoftwareDistribution,把它重命名为SDold 4.开始——运行——输入cmd——回车——在打开的窗口中输入net start WuAuServ 第二步: 1.开始——运行——输入regedit——回车 2.找到注册表,HKEY_LOCAL_MACHINE\SOFWARE\Microsoft\Internet E

用aspnet_regiis注册Framework4.0框架

1 用aspnet_regiis注册Framework4.0框架: 找到 4.0所在的目录如下图: 复制上面的目录 C:\Windows\Microsoft.NET\Framework\v4.0.30319 启动CMD (win键+R  )  ,进入上面的目录,如下图 按回车进入C:\Windows\Microsoft.NET\Framework\v4.0.30319  目录 如下图 然后运行 aspnet_regiis.exe -i  如下图 稍等片刻,安装成功. 至此Framework4.0

Entity Framework4.0 (一)概述(EF4 的Database First方法)

转自:http://www.cnblogs.com/marksun/archive/2011/12/15/2289582.html Entity Framework4.0(以后简称:EF4),是Microsoft的一款ORM(Object-Relation-Mapping)框架.同其它ORM(如,NHibernate,Hibernate)一样,一是为了使开发人员以操作对象的方式去操作关系型数据表.二是为了屏蔽底层不同厂商的数据库,开发人员面向ORM框架编写数据的CRUD(Create,Retri

【安装.net framework4.0】之安装失败,“安装时发生严重错误”

在网上查了很多资料都说改什么文件名和注册表什么的,根本没用,后来查到一篇文章,提供了下面的解决办法: 地址:<Microsoft .NET Framework 4.0安装时发生严重错误 无法安装>,表示感谢. 解决办法: 也就是说,把C盘下面的两个文件重新命名了就ok 了. C:\Windows\System32\msvcr100_clr0400.dll      C:\Windows\SysWOW64\msvcr100_clr0400.dll 就上面这两个,你命什么都可以.反之不要是原来的名