ASP.NET 4.0中使用FreeTextBox遇到安全问题警告的解决办法

时间:2024-04-09 16:10:35


新闻发布系统看了有一段时间了,很少遇到棘手的问题,基本上遇到最多的就是浏览器的兼容问题。

不过,在今天遇到了一个关于freeTextBox的安全问题。也就是用freeTextBox来添加新闻内容的时候,弹出如下警告:

ASP.NET 4.0中使用FreeTextBox遇到安全问题警告的解决办法

出错内容:

从客户端(ContentPlaceHolder1_M_ContentPlaceHolder_ftbContent="ff<STRONG>ff</STRONG>")中检测到有潜在危险的 Request.Form 值。

说明:请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示存在危及应用程序安全的尝试,如跨站点脚本攻击。若要允许页面重写应用程序请求验证设置,请将 httpRuntime 配置节中的 requestValidationMode 特性设置为 requestValidationMode="2.0"。示例: <httpRuntime requestValidationMode="2.0" />。设置此值后,可通过在 Page 指令或 <pages> 配置节中设置 validateRequest="false" 禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkId=153133。

异常详细信息: System.Web.HttpRequestValidationException: 从客户端(ContentPlaceHolder1_M_ContentPlaceHolder_ftbContent="ff<STRONG>ff</STRONG>")中检测到有潜在危险的 Request.Form 值。



先说一下,我的处理过程:

其实我们可以从出错信息中找到一些信息,我的做法:

首先在页面中加入这句话:ASP.NET 4.0中使用FreeTextBox遇到安全问题警告的解决办法


ValidateRequest="false"

结果发现错误依旧,那么,再看出错信息,我们看到了这句话:请将 httpRuntime 配置节中的 requestValidationMode 特性设置为 requestValidationMode="2.0"。示例: <httpRuntime requestValidationMode="2.0" />。

然后再Web.config文件中做如下配置:

ASP.NET 4.0中使用FreeTextBox遇到安全问题警告的解决办法

问题解决了!!!!




下面我们来总结一下:

一、分析原因:

ASP.Net 1.1后引入了对提交表单自动检查是否存在XSS(跨站脚本攻击)的能力。

当用户试图用之类的输入影响页面返回结果的时候,ASP.Net的引擎会引发一个

HttpRequestValidationExceptioin。也就是说,页面请求(request)时,含

有html或javascript等字符串时。ASP.NET会认为是危险的值,就会抛出辞异常。

当页面上使用了所见即所得编辑器(例如使用了fckeditor或FreeTextBox控件等)

的时候会发生此异常。


二、ASP.net4.0请求验证模式发生变化

参见:http://space.itpub.net/14466241/viewspace-669557


三、大家可以看一下这个官方的帮助文档,会对大家对这个问题的认识有所帮助的:

http://www.asp.net/whitepapers/request-validation


其实讲解了这个安全验证的由来,以及作用。

请大家注意一下这里:

ASP.NET 4.0中使用FreeTextBox遇到安全问题警告的解决办法


其中讲到了如果取消了这个安全验证的话,而且想存储content的话,那么就需要对其进行编码工作。


本人也是刚刚接触asp.net,希望大家留下您的宝贵意见!!!!