ASP.NET检测到不安全 Request.Form 值解决方案汇总

当我们在网站中使用CKEditor等富文本编辑器时,大多都会遇到这样的到警告

这是因为ASP.NET默认开启对页面提交内容的验证(不仅是ASP.NET MVC,WebForms也默认启用对页面提交的内容进行验证),解决这个问题的关键就在于在有富文本编辑器的页面或者会有提交html代码的页面关闭验证,可大致分为以下三种情况:

基于Framework2.0 webForm的网站

这种情况相比之下算是最好解决的,直接在需要的页面顶部的 Page 指令中设置 ValidateRequest="false"即可

基于Framework4 webForm的网站

这种情况与framework2.0 相比,稍微麻烦一些,不仅需要在页面顶部声明 ValidateRequest="false",还需要在 web.config文件中进一步修改,在web.config 添加或修改

<httpRuntime requestValidationMode="2.0"/>

ASP.MVC网站

第一步,修改web.config文件,如果是针对在某个目录下的文件的话,可以直接新建一个web.config文件(web.config文件有"就近原则",重复定义的属性,以离页面最近的web.config文件定义的为准),并在<system.web>节点下添加

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

(如果大多数文件都需要设置取消验证的话可以直接修改在网站根目录下的web.config文件)

第二步则需要在所需要设置的页面对应的Action方法上添加 [ValidateInput(false)] 属性,以标明取消验证。

第三步,最后在显示的页面应当 使用Html.Raw() 方法输出带html的内容,因为默认情况下会将html转义

以上所述就是本文的全部内容了,希望大家能够喜欢。

(0)

相关推荐

  • ASP读取Request.QueryString编码的函数代码

    1. 支持参数纯汉字 ?a=深山老熊 2. 支持参数gb2312 Urlencode编码: ?a=%C9%EE%C9%BD%C0%CF%D0%DC 3. 支持参数UTF-8 Urlencode编码: ?a=%E6%B7%B1%E5%B1%B1%E8%80%81%E7%86%8A 复制代码 代码如下: <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <% Option Explicit Const YXCMS_CH

  • asp.net下Request.QueryString取不到值的解决方法

    今天做新的ppc weather服务器的时候竟然碰到QueryString取不到值的问题 查了下网上,应该是编码的问题,tq121用的是utf-8,而我希望用gb2132输入~ 因此,改一下~哈哈 打开web.config把 <!-- <globalization              requestEncoding="utf-8"              responseEncoding="utf-8"     /> 改成 <glob

  • 循环取值Request.QueryString的用法

    当页面上的FORM以GET方式向页面发送请[/url]求数据(如数据含有不安全字符,则浏览器先将其转换成16进制的字符再传送,如空格被转成%20)时,WEB   SERVER   将请求数据放入一名为QUERY_STRING的环境变量中,QueryString   方法是从这一环境变量中取出相应的值,并将被转成16进制的字符还原(如   %20   被还原成空格). 如表单上有一   name为username的文本框及一   name为password的文本框   ,   当表单提交时,会产生

  • asp.net 从客户端中检测到有潜在危险的 Request.Form 值错误解

    从客户端(ftbContent="<P><A href="http://l...")中检测到有潜在危险的 Request.Form 值. 说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止.该值可能指示危及应用程序安全的尝试,如跨站点的脚本攻击.通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证.但是,在这种情况下,强烈建议应用程序显式检查所有输入. 异常详细信息: System.Web

  • ASP.NET从客户端中检测到有潜在危险的request.form值的3种解决方法

    当页面编辑或运行提交时,出现"从客户端中检测到有潜在危险的request.form值"问题,该怎么办呢?如下图所示: 下面博主汇总出现这种错误的几种解决方法: 问题原因:由于在asp.net中,Request提交时出现有html代码或javascript等字符串时,程序系统会认为其具有潜在危险的值.环境配置会报出"从客户端 中检测到有潜在危险的Request.Form值"这样的Error. 1.当前提交页面,添加代码 打开当前.aspx页面,页头加上代码:valid

  • asp.net中Request.QueryString与Request.Param的区别分析

    request.params其实是一个集合,它依次包括request.querystring.request.form.request.cookies和request.servervariables. 如果要在两个页面传递数据的话,只能用request.querystring.request.form.request.cookies Request.Params 是在 QueryString.Form.Server Variable 以及 Cookies 找数据, 他首先在 QueryStrin

  • ASP.NET中Request.Form中文乱码的解决方法

    背景 涉及到两个网站的通信,网站A有一页面a,用提交表单的方式,传值到网站B的页面b.网站A统一用UTF-8编码,网站B统一用GB2312编码. web.config中编码的设置 网站A:<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" /> 网站B:<globalization requestEncoding="gb2312" responseEnc

  • 从客户端检测到有潜在危险的Request.Form值的asp.net代码

    1.web.config文档<system.web>后面加入这一句: 复制代码 代码如下: <pages validaterequest="false"/> 示例: XML/HTML 复制代码 代码如下: <?xml version="1.0" encoding="gb2312" ?> <configuration> <system.web> <pages validaterequ

  • asp下request.querystring("id")与request("id")区别

    Request从几个集合取数据是有顺序的,从前到后的顺序依次是 QueryString,Form,最后是ServerVariables.Request对象按照这样的顺序依次搜索这几个集合中的变量,如果有符合的就中止,后面的就不管了. 现在我们来分析下你得问题.  假设有个页面 test.asp?id=111  这里我们的页面是用GET的方法.这时用request.querystring("id")与request("id")是一样得,应该如果不指定REQUEST得集

  • Request.QueryString与一般NameValueCollection的区别

    查看了QueryString的定义类型是NameValueCollection,就误以为这是NameValueCollection的重写了ToString()的方法,于是放心地将代码转移到了业务逻辑层.因为还要重构查询参数,因此重新构建了一个NameValueCollection,并想当然地用ToString()的结果作为Key.但实际运行之后发现,每次的结果都一样的,都是第一次的查询结果.经调试,发现NameValueCollection的ToString()方法并没有重新,还是返回的是"Sy

  • Jquery中request和request.form和request.querystring的区别

    Request.Form是获取以POST方式提交的表单数据: Request.QueryString主要是获取地址栏参数或者以Get方式提交的数据 而Request则包含以上两种方式,会在Request.QueryString和Request.Form中都查询一遍变量.但是优先获取GET方式提交的数据,即Request.QueryString Request:包含以上两种方式(优先获取GET方式提交的数据),它会在QueryString.Form.ServerVariable中都搜寻一遍. 而且

  • 有潜在危险的 Request.Form 值避免方法

    个人感觉在 .net framework 4.0中 最好的解决" 有潜在危险的 Request.Form 值" 这个问题的方法是 在 system.web 中加上 <httpRuntime requestValidationMode="2.0"/> 这句话 因为4.0的验证在HTTP的BeginRequest前启用 复制代码 代码如下: <system.web> <httpRuntime requestValidationMode=&q

随机推荐