启用asp.net核心请求validation

我错过了什么或asp.net核心允许在用户文本字段中发布脚本标记? 在asp.net mvc的早期版本中,我需要通过[AllowHtml]属性允许它。

有没有办法如何启用validation再次具有潜在危险的价值?

我可以随意提交价值

 

在表格发布期间。

模型:

 using System.ComponentModel.DataAnnotations; namespace Test.Models { public class TestModel { [MaxLength(500)] public string Content { get; set; } } } 

控制器:

 using Microsoft.AspNetCore.Mvc; using Test.Models; namespace Test.Controllers { public class HomeController : Controller { public IActionResult Index() { var model = new TestModel { Content = "Test" }; return View(); } [HttpPost] public IActionResult Index(TestModel model) { if(!ModelState.IsValid) return View(model); return Content("Success"); } } } 

视图:

 @model TestModel 

正如微软所认为的那样,ASP.NET Core没有类似于Requestvalidation的function,这不是一个好主意。 有关更多信息,请参阅有关ASP.NET核心问题的讨论’ 用于请求validation的默认中间件,如IIS有 ‘。

这意味着必须在入站模型上进行validation。 在Razor(.cshtml)中你应该输出用户提供的输入,如@Model.Content ,它对给定的字符串进行编码。

请记住,当输出的文本不在Html部分内时,那些转义技术可能不起作用。

因此除非您知道所提供的数据已经过清理,否则不要使用@Html.Raw(..)

补充:

  • 您可能需要考虑使用Web应用程序防火墙 (WAF)来防范恶意请求(例如XSS或SQL注入)。
  • 为了保护您的用户免受XSS攻击,您还可以查看提供内容安全策略 (CSP)。