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,其中展示了一个关于这两个属性的重要性的一个例子。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- .net core 使用Rotativa创建PDF文档
- asp.net – jQuery blackberry ajax问题
- .net – HttpContext.Request和Request之间的区别
- ASP.Net错误:“类型”foo“存在于”temp1.dll“和”temp2.
- asp.net-mvc – 您使用ASP.NET MVC的View Engine是什么?
- asp.net – 应用程序尝试执行安全策略不允许的操作
- asp.net – DSN测试正常,但尝试使用DSN到SQL Server 2005登
- asp.net – HTTP错误404.4 – 未找到您要查找的资源没有与之
- asp.net-3.5 – “回复视图状态MAC失败”回发到另一个页面
- asp.net-mvc – 在github中避免使用ASP.NET密码?
- asp.net-mvc – System.Web.Optimization使函数参
- ASP.NET核心Facebook身份验证中间件用户图片
- asp.net-mvc – 无法将值NULL插入“Discriminato
- ASP.NET – 将JSON从jQuery传递到ASHX
- ASP.NET LinqDataSource数据绑定后,遇到[Missin
- asp.net-mvc – ASP.NET MVC Javascript ActionR
- asp.net-mvc – 大型Web应用程序中的Windows Wor
- 使用ASP.Net进行适当的用户界面设计
- asp.net-mvc – 我可以在实际项目中使用Telerik
- asp.net – 高效地加入Entity Framework Core中另