在网页页面发布文章时遇到从客户端潜在危险的检测到存在危险的Request. form 值,怎么解决?

一、ueditor配置在asp.net中可能会遇到上传图片出错问题:解决方法:将前面部分类似&%@ Assembly Src=&~/net/Uploader.cs& %&的行删除,将Web.config 中的netFramework 版本设为一致原文:http://www.mhzg.net/a/9.html二、提交数据问题:&测到有潜在危险的Request.Form值&1.在网站总配置页面Web.config中&system.web&&/system.web&标签内加入&httpRuntime requestValidationMode=&2.0& /&例如:...... ......&httpRuntime requestValidationMode=&2.0& /&&/system.web&2.在提交页面的page对象中加入validateRequest=&false&属性例如:&&%@ Page validateRequest=&false&Language=&C#& AutoEventWireup=&true& CodeFile=&XXX.aspx.cs& Inherits=&Admin_Default& %&原文:http://www.zhenglin.name/post//&
原创文章如转载,请注明:转载自
本文链接地址:
Powered By Z-Blog这篇文章主要介绍了ASP.NET从客户端中检测到有潜在危险的request.form值的3种解决方法,这是ASP.NET开发中一个比较常见的经典的问题,需要的朋友可以参考下
当页面编辑或运行提交时,出现“从客户端中检测到有潜在危险的request.form值”问题,该怎么办呢?如下图所示:
下面博主汇总出现这种错误的几种解决方法:
问题原因:由于在asp.net中,Request提交时出现有html代码或javascript等字符串时,程序系统会认为其具有潜在危险的值。环境配置会报出“从客户端 中检测到有潜在危险的Request.Form值”这样的Error。
1、当前提交页面,添加代码
打开当前.aspx页面,页头加上代码:validateRequest=”false”,如:
&%@ Page Language="C#" ValidateRequest="false" AutoEventWireup="false" CodeFile="default.aspx.cs"%&
2、全局修改web.config配置文件(此举不建议、不安全)
打开web.config文件,在&system.web&&/system.web&中间,加上如下代码:
&pages validateRequest="false" /&
3、另一种处理方法:原因是所传值含有特殊危险符号,那么可以在传前,利用Server.HtmlEncode(string)方法,对字符串进行编码,这样就会将危险字符转义为普通的字符。如TextBox1.Text=Server.HtmlEncode(str);
更多信息请查看
更多信息请查看
易贤网手机网站地址:
【】&&&&&【点此处查询各地各类考试咨询QQ号码及交流群】
由于各方面情况的不断调整与变化,易贤网所提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
云南各地招聘
&nbsp&nbsp&nbsp &nbsp&nbsp&nbsp会员注册
本站不参与评论,(&&点此深度交流 )
自觉遵守:爱国、守法、自律、真实、文明的原则
尊重网上道德,遵守中华人民共和国各项有关法律法规
严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的评论
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
您在本站发表的评论,本站有权保留、转载、引用或者删除
参与本评论即表明您已经阅读并接受上述条款asp.net开发中,经常遇到&从客户端检测到有潜在危险的Request.Form 值&错误提示,很多人给出的解决方案是:1、web.config文档&system.web&后面加入这一句: &pages validaterequest="false"/&&示例:&&?&configuration&&&system.web&&&pages validaterequest="false"/&&&/system.web&&&/configuration&2、在*.aspx文档头的page中加入validaterequest="false",示例如下:&&%@ page validaterequest="false" language="c#" codebehind="index.aspx.cs" autoeventwireup="false" inherits="mybbs.webform1" %&&&其实这样做是不正确的,会给程序安全带来风险。  ASP.Net 1.1后引入了对提交表单自动检查是否存在XSS(跨站脚本攻击)的能力。当用户试图用之类的输入影响页面返回结果的时候,ASP.Net的引擎会引发一个 HttpRequestValidationExceptioin。这是ASP.Net提供的一个很重要的安全特性。因为很多程序员对安全没有概念,甚至都不知道XSS这种攻击的存在,知道主动去防护的就更少了。ASP.Net在这一点上做到默认安全。这样让对安全不是很了解的程序员依旧可以写出有一定安全防护能力的网站。  但是,当我Google搜索 HttpRequestValidationException 或者 "A potentially dangerous Request.Form value was detected from the client"的时候,惊奇的发现大部分人给出的解决方案竟然是在ASP.Net页面描述中通过设置 validateRequest=false 来禁用这个特性,而不去关心那个程序员的网站是否真的不需要这个特性。看得我这叫一个胆战心惊。安全意识应该时时刻刻在每一个程序员的心里,不管你对安全的概念了解多少,一个主动的意识在脑子里,你的站点就会安全很多。  为什么很多程序员想要禁止 validateRequest 呢?有一部分是真的需要用户输入"&&"之类的字符。这就不必说了。还有一部分其实并不是用户允许输入那些容易引起XSS的字符,而是讨厌这种报错的形式,毕竟一大段英文加上一个ASP.Net典型异常错误信息,显得这个站点出错了,而不是用户输入了非法的字符,可是自己又不知道怎么不让它报错,自己来处理报错。  对于希望很好的处理这个错误信息,而不使用默认ASP.Net异常报错信息的程序员们,你们不要禁用validateRequest=false。  正确的做法是在你当前页面添加Page_Error()函数,来捕获所有页面处理过程中发生的而没有处理的异常。然后给用户一个合法的报错信息。如果当前页面没有Page_Error(),这个异常将会送到Global.asax的Application_Error()来处理,你也可以在那里写通用的异常报错处理函数。如果两个地方都没有写异常处理函数,才会显示这个默认的报错页面呢。  举例而言,处理这个异常其实只需要很简短的一小段代码就够了。在页面的Code-behind页面中加入这么一段代码:protectedvoid Page_Error(object sender, EventArgs e){Exception ex = Server.GetLastError();if (HttpContext.Current.Server.GetLastError() is HttpRequestValidationException){HttpContext.Current.Response.Write("请输入合法的字符串【&a href=\"javascript:history.back(0);\"&返回&/a&】");HttpContext.Current.Server.ClearError();}}  这样这个程序就可以截获 HttpRequestValidationException 异常,而且可以按照程序员的意愿返回一个合理的报错信息。  这段代码很简单,所以我希望所有不是真的要允许用户输入之类字符的朋友,千万不要随意的禁止这个安全特性,如果只是需要异常处理,那么请用类似于上面的代码来处理即可。  而对于那些通过 明确禁止了这个特性的程序员,自己一定要明白自己在做什么,而且一定要自己手动的检查必须过滤的字符串,否则你的站点很容易引发跨站脚本攻击。  关于存在Rich Text Editor的页面应该如何处理?  如果页面有富文本编辑器的控件的,那么必然会导致有类的HTML标签提交回来。在这种情况下,我们不得不将validateRequest="false"。那么安全性怎么处理?如何在这种情况下最大限度的预防跨站脚本攻击呢?  根据微软的建议,我们应该采取安全上称为&默认禁止,显式允许&的策略。  首先,我们将输入字符串用 HttpUtility.HtmlEncode()来编码,将其中的HTML标签彻底禁止。  然后,我们再对我们所感兴趣的、并且是安全标签,通过Replace()进行替换。比如,我们希望有""标签,那么我们就将""显式的替换回""。void submitBtn_Click(object sender, EventArgs e){//将输入字符串编码,这样所有的HTML标签都失效了。
StringBuilder sb =new StringBuilder(HttpUtility.HtmlEncode(htmlInputTxt.Text));//然后我们选择性的允许&b& 和 &i&
sb.Replace("&b&", "&b&");sb.Replace("&/b&", "&/b&");sb.Replace("&i&", "&i&");sb.Replace("&/i&", "&/i&");Response.Write(sb.ToString());}&这样我们即允许了部分HTML标签,又禁止了危险的标签。根据微软提供的建议,我们要慎重允许下列HTML标签,因为这些HTML标签都是有可能导致跨站脚本攻击的。&applet&&&body&&&embed&&&frame&&&script&&&frameset&&&html&&&iframe&&&img&&&style&&&layer&&&link&&&ilayer&&&meta&&&object&可能这里最让人不能理解的是&img&。但是,看过下列代码后,就应该明白其危险性了。&img src="javascript:alert('hello');"&asp.net中“从客户端中检测到有潜在危险的Request.Form值”的错误
asp.net中“从客户端中检测到有潜在危险的Request.Form值”的错误
  在提交表单时候,asp.net 提示:&从客户端(......)中检测到有潜在危险的 Request.Form 值& 。asp.net中的请求验证特性提供了某一等级的保护措施防止XSS攻击,asp.net的请求验证是默认启动的。这个给出各个版本.net的解决方法。
asp.net 2.0 通常解决办法
将.aspx文件中的page项添加ValidateRequest=&false& ,如下:
&%@ Page ValidateRequest=&false& Language=&C#& AutoEventWireup=&true& CodeFile=&test2.aspx.cs& Inherits=&test2& %&
修改web.config配置文件
&system.web&
&pages validateRequest=&false& &
&/system.web&
总结:validateRequest 这句我们知道是关闭验证,也就是说提交带标签,比如 &strong&粗体&/strong& 这样的值时,ASP.NET 不会报错。这里推荐使用方案一,因为方案一只修改test.aspx这一个页面;而如果使用方案二的话,将是整个解决方案都变成ValidateRequest=&false& 。
asp.net 4.0 解决办法
4.0和2.0的方法一样,不过要注意的是从 .Net Framework 4.0 开始,asp.net开始强制检测Request参数安全,而我们可以通过修改 Web.config 来恢复 2.0 版本的模式。
方法如下:
修改Web.config,增加requestValidationMode=&2.0&属性值
&system.web&
&httpRuntime requestValidationMode=&2.0& /&
&pages validateRequest=&false&&&/pages&
&/system.web&
4.0 中多了一个 requestValidationMode,这是什么意思呢?
requestValidationMode 有两个值:
&2.0仅对网页启用请求验证。是启用还是关闭取决于 validateRequest。
&4.0 默认值。任何 HTTP 请求都会启用请求验证,也就是说不光是网页,还包括 Cookie 等。此时强制启用,不管 validateRequest 为何值。
由于 requestValidationMode=&4.0& 是强制启用,所以我们会发现在 .NET Framework 4.0 中仅靠设置 validateRequest 是关闭不了请求验证的,还得将 requestValidationMode 设置为 2.0。
&&&主编推荐
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
港口与航道工程建设工程法规及相关知识建设工程经济考试大纲矿业工程市政公用工程通信与广电工程
操作系统汇编语言计算机系统结构人工智能数据库系统微机与接口
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
Powerpoint教程WPS教程
电子政务客户关系管理首席信息官办公自动化大数据
职称考试题目
就业指导签约违约职业测评
招生信息考研政治
网络安全安全设置工具使用手机安全
3DMax教程Flash教程CorelDraw教程Director教程
Dreamwaver教程HTML教程网站策划网站运营Frontpage教程
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
互联网电信IT业界IT生活
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
组织运营财务资本
视频播放文件压缩杀毒软件输入法微博
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&

我要回帖

更多关于 客户端潜在危险的 的文章

 

随机推荐