9
我錯過了什麼或asp.net核心允許在用戶文本字段中發佈腳本標記?在之前版本的asp.net mvc中,我需要通過[AllowHtml]屬性來允許它。啓用asp.net核心請求驗證
有沒有辦法讓驗證再次發生潛在的危險值?
我可以自由的形式郵寄過程中像
<script src='http://test.com/hack.js'></script>
提交值。
型號:
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
<form asp-action="Index" asp-controller="Home" method="post">
<div asp-validation-summary="All"></div>
<label asp-for="Content">Content<strong>*</strong></label>
<span asp-validation-for="Content"></span>
<input asp-for="Content" type="text" />
</div>
</form>
這是一個很好的問題。我還沒有遇到這個問題。 ASP.NET Core中的所有東西都是選擇加入的,所以我非常肯定你需要將它作爲中間件添加,但我不確定它是否已經被移植到了其中。希望我錯了。 –
在System.Web中有一個名爲'System.Web.CrossSiteScriptingValidation'的類,它似乎持有確定請求是否無效的邏輯。看起來很簡單,快速一瞥。也許這可以用來敲除一些中間件,如果還不存在的話。 –
似乎可能requestvalidation已被刪除,因爲我們不應該依賴它來保證安全性,相反,我們應該驗證輸入並編碼不受信任的輸出http://forums.asp.net/t/2032496.aspx?Where+is+AllowHtml –