Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在web.config文件中全局验证textbox控件的html标记输入_Asp.net Mvc_Razor Pages - Fatal编程技术网

Asp.net mvc 在web.config文件中全局验证textbox控件的html标记输入

Asp.net mvc 在web.config文件中全局验证textbox控件的html标记输入,asp.net-mvc,razor-pages,Asp.net Mvc,Razor Pages,我想限制将html标记作为输入的用户。 那么,如何在Asp.NETMVC项目的web.config文件中全局处理它呢。 我使用了ValidateInput(false),但它完全允许html标记保存在db中。XSS验证默认在MVC中启用。因此,您不必限制HTML的输入(它已经被限制),而是只允许对已标记的某些操作或ViewModel属性输入HTML 在操作上设置[ValidateInput(false)]属性将禁用对整个操作的验证 在ViewModel属性上设置[AllowHtml]属性只允许对

我想限制将html标记作为输入的用户。
那么,如何在Asp.NETMVC项目的web.config文件中全局处理它呢。
我使用了ValidateInput(false),但它完全允许html标记保存在db中。

XSS验证默认在MVC中启用。因此,您不必限制HTML的输入(它已经被限制),而是只允许对已标记的某些操作或ViewModel属性输入HTML

在操作上设置
[ValidateInput(false)]
属性将禁用对整个操作的验证

在ViewModel属性上设置
[AllowHtml]
属性只允许对该属性进行HTML输入。这是启用HTML输入的推荐方法

要解决问题,您应该从操作中删除
[ValidateInput(false)]

进一步阅读:

还要确保在web.config中配置了正确的
requestValidationMode


若要在输入验证失败时提供自定义错误消息,请在Global.asax中注册一个
IEExceptionFilter
,由其检查引发的异常是否为
HttpRequestValidationException

public class HttpRequestValidationExceptionFilter : FilterAttribute, IExceptionFilter {

    public const int MySpecialStatusCodeIndicatingValidationError = 1337;

    public void OnException(ExceptionContext filterContext) {
        if (!filterContext.ExceptionHandled && filterContext.Exception is HttpRequestValidationException) {
            // redirect to error controller, which shows custom message
            filterContext.Result = new HttpStatusCodeResult(MySpecialStatusCodeIndicatingValidationError);
            filterContext.ExceptionHandled = true;
        }
    }
}

有关使用特殊状态代码处理错误的可能机制,请参阅。我们的想法是识别
MySpecialStatusCodeIndicatingValidationError
并重定向到custom
HttpErrorController

中的正确操作感谢您的信息,但我的目的是在用户在文本框中输入html标记时向用户发送错误消息,我想在一个地方全局处理这个问题,可以是web.config,也可以是Global.asax。请查看我的编辑,了解如何捕获默认请求验证引发的异常并提供自定义消息。感谢提供信息,我还有一个问题,有没有办法清除验证提供程序(我们在global.asax modelvalidateproviders.Providers.Clear();)中给出),并在web.config文件中添加自定义验证提供程序