asp.net-mvc – 页面的ValidateRequest设置可以被覆盖吗?

我有一个ASP.NET MVC形式,可能(通常)提交一个响应,将触发“从客户端检测到一个潜在危险的Request.Form值”错误。

为了试图解决这个问题,我在页面指令中放置了一个ValidateRequest =“false”。

只有问题:我仍然得到的错误!

现在,一切都很好,直到我更新到ASP.NET MVC RC今天上午,(根据readme),放置以下在视图web.config:

<pages validateRequest="false" 
       pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter,System.Web.Mvc,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31BF3856AD364E35"
       pageBaseType="System.Web.Mvc.ViewPage,PublicKeyToken=31BF3856AD364E35"
       userControlBaseType="System.Web.Mvc.ViewUserControl,PublicKeyToken=31BF3856AD364E35">
    <controls>
        <add assembly="System.Web.Mvc,PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
    </controls>
</pages>

所以,validateRequest对于所有页面应该是false,对吧?我缺少什么?

解决方法

在MVC中,验证发生在控制器级别,而不是页面级别。为了看看为什么会这样,考虑在控制器动作执行的时候,我们不知道选择哪个视图来渲染。 (实际上,控制器动作甚至可能甚至不渲染视图!它可能在客户端打开文件下载提示)。此外,如果用户提交恶意输入到服务器,在视图呈现它的时间太晚了,不能做任何事情。控制器已经将危险输入提交到数据库。

相反,请使用属性[ValidateInput(false)]装饰控制器或操作。这将导致我们抑制对该控制器或操作的请求验证。

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....