微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-mvc-4 – ValidateInput(false)vs AllowHtml

我有一个用于创建备忘录的表单,为了提供一些样式,我有一个丰富的文本编辑器,这样创建html标签以应用样式。当我发布该文本mvc抛出一个错误,以防止潜在的危险脚本,所以我必须具体允许它。

我已经找到了2种方法,装饰控制器方法whit [ValidateInput(false)]或装饰viewmodel属性whit [AllowHtml]

对我来说,[AllowHtml]看起来更好,但我只发现这种方法使用了1次,而[ValidateInput(false)]接缝是首选方式。

所以我想知道你的想法,我应该使用哪一个? 2之间有什么区别?

TKS

解决方法

ValidateInput和AllowHTML与 XSS安全问题直接相关。

所以让我们先来试一试了解XSS。

XSS(跨站点脚本)是攻击者在进行数据输入时注入恶意代码的安全攻击。现在的好消息是,认情况下,XSS是在MVC中禁止的。因此,如果有人尝试发布JavaScript或HTML代码,他将使用以下错误

但是,实际上还有一些需要允许HTML的情况,比如HTML编辑器。因此,对于这些场景,您可以使用以下属性来装饰您的动作。

[ValidateInput(false)]
public ActionResult PostProduct(Product obj)
{
    return View(obj);
}

但等等,这里有一个问题。问题是我们允许HTML完整的操作可能是危险的。所以,如果我们可以对现场或财产水平进行更精细的控制,真正创造一个整洁,专业的解决方案。

那就是AllowHTML是有用的。您可以在下面的代码中看到,我已经在产品类属性级别上装饰了“AllowHTML”。

public class Product
{
    public string ProductName { get; set; }
    [AllowHtml]
    public string ProductDescription { get; set; }
}

因此,总结“ValidateInput”允许脚本和HTML在“AllowHTML”处于更细粒度的级别上发布在操作级别上。

我建议您更多地使用“AllowHTML”,直到您确定整个操作需要裸体。

我会建议您阅读博客文章Preventing XSS Attacks in ASP.NET MVC using ValidateInput and AllowHTML,其中展示了一个关于这两个属性的重要性的一个例子。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WPF...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这...
Some samples are below for ASP.Net web form controls:(from http://www.visualize.uk.com/resources/asp
问题描述: 对于未定义为 System.String 的列,唯一有效的值是(引发异常)。 For columns not defined as System.String, the only vali
最近用到了CalendarExtender,结果不知道为什么发生了错位,如图在Google和百度上找了很久,中文的文章里面似乎只提到了如何本地化(就是显示中文的月份)以及怎么解决被下拉框挡住的问题,谈
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence changed a lot since 1.1. Here is the order: App
静态声明: ' Style="position: relative" AppendDataBoundItems="True"> (无 或 空 或
以下内容是从网络上搜集资料,然后整理而来的。不当之处,请不吝指教。(The following were from network, and edited by myself. Thanks in a
Imports System Imports System.Reflection Namespace DotNetNuke '*********************************
Ok so you have all seen them: “8 million tools for web development”, “5 gagillion tools that if you