eba*_*eba 4 asp.net asp.net-mvc
我正在发送带有html的帖子给控制器,并在Chrome中获得例外:
无法加载资源:服务器响应状态为500(内部服务器错误)
.net 4.0,webserver是webdev在vs2010我的配置:
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies>
</compilation>
<httpRuntime requestValidationMode="2.0" />
<pages validateRequest="false">
<namespaces>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Routing"/>
</namespaces>
</pages>
Run Code Online (Sandbox Code Playgroud)
...
我错过了什么?
Mic*_*tum 21
您需要设置[ValidateInput(false)]要允许HTML的Controller Action.(或者在整个控制器上,但那是不好的做法.
另一个重要的事情是你已经<httpRuntime requestValidationMode="2.0" />在web.config中获得的那个.
在.aspx文件或web.config中设置RequestValidate在MVC中不起作用,因为它是控制器,而不是请求验证的View.
编辑:与此同时,MVC 3发布了.这允许您使用[AllowHtml]装饰模型的各个属性,以使其安全,而无需完全禁用请求验证.
如果您使用的是MVC 3 RC,那么可以使用属性的新属性作为[AllowHtml]
而不是在Controller Action上设置[ValidateInput(false)] - 这不会帮助您防止XSS攻击
ASP.NET MVC包含内置支持以防止HTML和跨站点脚本注入攻击,并且如果有人试图将HTML内容作为输入发布,则默认会抛出错误.开发人员需要明确指出这是允许的(并且他们希望构建他们的应用程序以安全地支持它)以便启用它.在ASP.NET MVC 3中,我们现在还支持一个新属性,您可以将其应用于模型/视图模型的属性,以指示HTML输入已启用,从而以干燥的方式实现更细粒度的保护.在上个月的RC版本中,此属性被命名为[SkipRequestValidation].使用RC2,我们将其重命名为[AllowHtml]以使其更直观:在模型/ viewmodel上设置上述[AllowHtml]属性将导致ASP.NET MVC 3在模型绑定该属性时关闭HTML注入保护.
| 归档时间: |
|
| 查看次数: |
9799 次 |
| 最近记录: |