Net Core教程

ASP.NET在POST字符串时,如果字符串是HTML串,要注意的问题

本文主要是介绍ASP.NET在POST字符串时,如果字符串是HTML串,要注意的问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

ASP.NET在POST字符串时,如果字符串是HTML串,要注意的问题

默认情况下发出现这样的错误:asp.net中“从客户端中检测到有潜在危险的Request.Form值”的错误

解决方法:

1、在ASP.NET2时,需要在web.config里面的<system.web></system.web>中加入如下代码,以关闭验证<pages validateRequest="false"></pages>,也就是说提交带标签,比如 <strong>粗体</strong> 这样的值时,ASP.NET 不会报错。完整代码如下

<system.web>
    <pages validateRequest="false"></pages>
</system.web>

2、在ASP.NET4时,还多了一个 requestValidationMode,这是什么意思呢?

requestValidationMode 有两个值:

  • 2.0仅对网页启用请求验证。是启用还是关闭取决于 validateRequest。
  • 4.0 默认值。任何 HTTP 请求都会启用请求验证,也就是说不光是网页,还包括 Cookie 等。此时强制启用,不管 validateRequest 为何值。

由于 requestValidationMode="4.0" 是强制启用,所以我们会发现在 .NET Framework 4.0 中仅靠设置 validateRequest 是关闭不了请求验证的,还得将 requestValidationMode 设置为 2.0。

完整代码如下:

<system.web>

   <compilation debug="true" targetFramework="4.0"/>

    <httpRuntime requestValidationMode="2.0" />
    <pages validateRequest="false"></pages>
</system.web>

 

3、MVC框架中,在控制方法前加入:

[ValidateInput(false)]属性。

另外还有一种方法就是实现自己的请求验证类,首先需要在web.config中指定请求验证类类型:

<httpRuntime requestValidationType=”Globals.CustomRequestValidation”/>

然后实现自己的请求验证类,这个类必须从RequestValidator类中继承,具体代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Util;
namespace Globals
{
/// <summary>
/// Summary description for CustomRequestValidation
/// </summary>
public class CustomRequestValidation : RequestValidator
{
public CustomRequestValidation() { }
protected override bool IsValidRequestString(HttpContext context, string value, RequestValidationSource requestValidationSource, string collectionKey, outint validationFailureIndex)
{
//block script tags
var idx = value.ToLower().IndexOf(“<script”);
if (idx > -1)
{
validationFailureIndex = idx;
return false;
}
else
{
validationFailureIndex = 0;
return true;
}
}
}
}

IsValidRequestString函数返回true则验证通过,否则验证失败,还会出现文章开头所说的错误消息。此请求验证类当检测到<script>标签时就会出现错误,防止脚本注入攻击等等。

这篇关于ASP.NET在POST字符串时,如果字符串是HTML串,要注意的问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!