"从客户端中检测到有潜在危险的 Request.Form 值"的解决方案汇总

#事故现场

  在一个asp.net 的项目中,前端通过ajax将富文本中的文字内容post到服务端的一个ashx中,在ashx中尝试读取参数值时,

结果报错:“从客户端中检测到有潜在危险的 Request.Form 值”

#事故分析

  由于在asp.net中,Request提交时出现有html代码字符串时,程序系统会认为其具有潜在危险的值。会报出“从客户端 中检测到有潜在危险的Request.Form值”这样的Error。

  而富文本中的内容是包含html代码的,所以...

#解决方案:

1、前端对富文本字符串进行encodeURI编码,服务端进行HttpUtility.UrlDecode解码操作;

  前端代码:

 1     var str = ‘<p><span style="color: #00B0F0;"><em><strong>我想留在你的身边,</strong></em></span><br/></p><p><span style="color: #7030A0;"><strong><span style="text-decoration: underline;">深情款款多么可怜;</span></strong></span></p>‘;
 2     $(function() {
 3         $.ajax({
 4             type: "post",
 5             url: "TestHandle.ashx",
 6             data: { Title: ‘jack‘, Content: encodeURI(str) },
 7             success: function (data) {
 8                 $("#div").html(data);
 9             }
10         });
11     });

  后端代码:

1     public void ProcessRequest(HttpContext context)
2     {
3         string str = context.Request["content"];
4         string content = HttpUtility.UrlDecode(str);
5         context.Response.ContentType = "text/plain";
6         context.Response.Write(content);
7     }

  效果图:

2、前端不以form的方式提交,直接以json方式提交,服务端从request的body中读取数据,然后反序列化,得到信息;

  前端代码:

 1     var str = ‘<p><span style="color: #00B0F0;"><em><strong>我想留在你的身边,</strong></em></span><br/></p><p><span style="color: #7030A0;"><strong><span style="text-decoration: underline;">深情款款多么可怜;</span></strong></span></p>‘;
 2     var temp = { Title: ‘jack‘, Content: str };
 3     $.ajax({
 4         type: "post",
 5         url: "TestHandle.ashx",
 6         contentType:"application/json;charset=utf-8",
 7         data: JSON.stringify(temp),
 8         success: function (data) {
 9             $("#div").html(data);
10         }
11     });

  后端代码:

1     string bodyText;
2     using (var bodyReader = new System.IO.StreamReader(context.Request.InputStream))
3     {
4         bodyText = bodyReader.ReadToEnd();
5     }
6     dynamic bodyObj = JsonConvert.DeserializeObject(bodyText);
7
8     context.Response.ContentType = "text/plain";
9     context.Response.Write(bodyObj.Content);

  效果图:

#其他场景的解决方案:

1、aspx页面,当前页面进行form提交

  打开当前.aspx页面,页头加上代码:validateRequest=”false”,如:

<%@ Page Language="C#" ValidateRequest="false" AutoEventWireup="false" CodeFile="default.aspx.cs" Inherits="default" %>

  该方法不推荐,还有一种修改web.config配置文件的方法,强烈不推荐,就不写在这里了;

2、在ASP.NET MVC中的解决方案

  1)、针对某个实体类的单个字段设置 [AllowHtml] ,这样提交的时候,系统就会放过该字段。

  2)、前端代码:

 1     var str = ‘<p><span style="color: #00B0F0;"><em><strong>我想留在你的身边,</strong></em></span><br/></p><p><span style="color: #7030A0;"><strong><span style="text-decoration: underline;">深情款款多么可怜;</span></strong></span></p>‘;
 2     $(function () {
 3         $.ajax({
 4             type: "post",
 5             url: "Home/Test",
 6             data: { Title: ‘jack‘, Content: str },
 7             success: function (data) {
 8                 $("#div").html(data.ok);
 9             }
10         });
11     });

  3)、后端代码:

1     public class NewInfo
2     {
3         public string Title { get; set; }
4         [AllowHtml]
5         public string Content { get; set; }
6     }
1     public ActionResult Test(NewInfo info)
2     {
3         return Json(new { ok = info.Content});
4     }

#写在最后

该文只是浅显的总结一下,其中涉及的xss方面,没有详细考虑,欢迎指正!

——————————————————————————————————————————

原文地址:https://www.cnblogs.com/willingtolove/p/10923895.html

时间: 2024-10-11 16:07:14

"从客户端中检测到有潜在危险的 Request.Form 值"的解决方案汇总的相关文章

Asp.net 从客户端中检测到有潜在危险的Request.Form值

解决方法: 在Web.config文件里找到<httpRuntime>节点,然后修改requestValidationMode="2.0" 修改结果如下: <system.web> <httpRuntime targetFramework="4.5" requestValidationMode="2.0"/> <system.web> 如果是asp.net应用程序 <% @ Page Vali

从客户端中检测到有潜在危险的 request.form值[解决方法]

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

从客户端(...)中检测到有潜在危险的Request.Form 值的处理办法

解决方案一: 在.aspx文件头中加入这句: <%@ Page validateRequest="false" %> 解决方案二: 修改web.config文件: <configuration> <system.web> <pages validateRequest="false" /> </system.web> </configuration> web.config里面加上这个一定要加对地方

从客户端中检测到有潜在危险的Request.Form值 的解决方法

在提交表单时候,asp.net 提示:"从客户端(......)中检测到有潜在危险的 Request.Form 值" .asp.net中的请求验证特性提供了某一等级的保护措施防止XSS攻击,asp.net的请求验证是默认启动的.这个给出各个版本.net的解决方法. asp.net 2.0 通常解决办法 方案一: 将.aspx文件中的page项添加ValidateRequest="false" ,如下: <%@ Page ValidateRequest=&quo

MVC中提示错误:从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法

今天往MVC中加入了一个富文本编辑框,在提交信息的时候报了如下的错误:从客户端(Content="<EM ><STRONG ><U >这是测试这...")中检测到有潜在危险的Request.Form 值.说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止.该值可能指示存在危及应用程序安全的尝试,如跨站点脚本攻击.若要允许页面重写应用程序请求验证设置,请将 httpRuntime 配置节中的 requestValidationMo

从客户端中检测到有潜在危险的Request.Form值的解决方法

描述:从客户端中检测到有潜在危险的Request.Form值的解决方法asp.net 2.0 通常解决办法将.aspx文件中的page项添加ValidateRequest="false"或者修改配置文件 <system.web> <pages validateRequest="false" > </pages> </system.web> 从客户端中检测到有潜在危险的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="fa

ASP.NET MVC从客户端中检测到有潜在危险的 Request.Form 值

ASP.NET MVC4(Razor)从客户端中检测到有潜在危险的 Request.Form 值 “/”应用程序中的服务器错误. 从客户端(Content=" sdfdddd ...")中检测到有潜在危险的 Request.Form 值. 说明: ASP.NET 在请求中检测到包含潜在危险的数据,因为它可能包括 HTML 标记或脚本.该数据可能表示存在危及应用程序安全的尝试,如跨站点脚本攻击.如果此类型的输入适用于您的应用程序,则可包括明确允许的网页中的代码.有关详细信息,请参阅 ht

从客户端(******)中检测到有潜在危险的 Request.Form 值。

在 提交表单时候,asp.net 提示:"从客户端(......)中检测到有潜在危险的 Request.Form 值" .asp.net中的请求验证特性提供了某一等级的保护措施防止XSS攻击,asp.net的请求验证是默认启动的.这个给出各个版本.net的解决方 法. asp.net 2.0  解决办法 方法1: 将.aspx文件中的page项添加ValidateRequest="false" ,如下: <%@ Page ValidateRequest=&qu