ASP.NET在POST字符串时,如果字符串是HTML串,要注意的问题
ASP.NET在POST字符串时,如果字符串是HTML串,要注意的问题
默认情况下发出现这样的错误:asp.net中“从客户端中检测到有潜在危险的Request.Form值”的错误
解决方法:
1、在ASP.NET2时,需要在web.config里面的
2、在ASP.NET4时,还多了一个 requestValidationMode,这是什么意思呢?
requestValidationMode 有两个值:
- 2.0仅对网页启用请求验证。是启用还是关闭取决于 validateRequest。
- 4.0 默认值。任何 HTTP 请求都会启用请求验证,也就是说不光是网页,还包括 Cookie 等。此时强制启用,不管 validateRequest 为何值。
由于 requestValidationMode="4.0" 是强制启用,所以我们会发现在 .NET Framework 4.0 中仅靠设置 validateRequest 是关闭不了请求验证的,还得将 requestValidationMode 设置为 2.0。
完整代码如下:
3、MVC框架中,在控制方法前加入:
[ValidateInput(false)]属性。
另外还有一种方法就是实现自己的请求验证类,首先需要在web.config中指定请求验证类类型:
然后实现自己的请求验证类,这个类必须从RequestValidator类中继承,具体代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Util;
namespace Globals
{
///
/// Summary description for CustomRequestValidation
///
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(“