asp.net 从客户端中检测到有潜在危险的 Request.Form 值错误解
从客户端(ftbContent="<P><A
href="http://l...")中检测到有潜在危险的 Request.Form 值。
说明:
请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示危及应用程序安全的尝试,如跨站点的脚本攻击。通过在 Page 指令或 配置节中设置
validateRequest=false 可以禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。
异常详细信息:
System.Web.HttpRequestValidationException: 从客户端(ftbContent="<P><A
href="http://l...")中检测到有潜在危险的 Request.Form 值
以上为系统报错信息。原因是,在
ASP.NET 1.1 中,@Page 指令上的 ValidateRequest 属性被打开后,将检查以确定用户没有在查询字符串、Cookie
或表单域中发送有潜在危险性的 HTML
标记。如果检测到这种情况,将引发异常并中止该请求。该属性默认情况下是打开的;您无需进行任何操作就可以得到保护。如果您想允许 HTML
标记通过,必须主动禁用该属性。
解决办法:
方法一、修改.aspx文件
在.aspx文件中加入validateRequest="false",形如:
<%@
Page validateRequest="false" language="c#" Codebehind="WriteNews.aspx.cs"
AutoEventWireup="false" Inherits="News.WriteNews" %>
方法二、配置web.config文件
<?xml
version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<!--
WriteNews.aspx使用内容编辑框时必须添加该语句,否则无法 Request值
-->
<pages
validateRequest="false"/>
</system.web>
</configuration>
推荐使用方法一。
方法3:
之前用的时候,没问题,后面换了个项目,居然报错了,郁闷至极,谷歌了下,艰难的找了原来是Framework的问题,原来用的2.0,后面变成了4.0,验证级别也更高了;
解决办法:在config文件中加一句:<httpRuntime requestValidationMode="2.0" />,意思就是启用2.0的验证;
代码:
- <?xml version="1.0" encoding="utf-8"?>
- <configuration>
- <system.web>
- <httpRuntime requestValidationMode="2.0" />
- <compilation debug="true" targetFramework="4.0">
- <assemblies>
- <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- </assemblies>
- </compilation>
- </system.web>
- <connectionStrings>
- <add name="PuqooAdminEntities" connectionString="metadata=res://*/AdminEntities.csdl|res://*/AdminEntities.ssdl|res://*/AdminEntities.msl;provider=System.Data.SqlClient;provider connection string="Data Source=redvine;Initial Catalog=Puqoo;Persist Security Info=True;User ID=sa;Password=sql_2008;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
- </connectionStrings>
- </configuration>
上个图:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。