Tôi có thiếu thứ gì đó hoặc lõi asp.net cho phép đăng thẻ script trong trường văn bản của người dùng không? Trong các phiên bản trước của asp.net mvc, tôi cần cho phép nó bằng thuộc tính [AllowHtml].Bật xác thực yêu cầu lõi asp.net
Có cách nào để bật xác thực lại có thể có giá trị nguy hiểm không?
tôi rảnh nộp giá trị như
<script src='http://test.com/hack.js'></script>
trong bài mẫu.
mẫu:
using System.ComponentModel.DataAnnotations;
namespace Test.Models
{
public class TestModel
{
[MaxLength(500)]
public string Content { get; set; }
}
}
Bộ điều khiển:
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");
}
}
}
Xem:
@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>
Đó là một câu hỏi hay. Tôi chưa gặp vấn đề đó. Tất cả mọi thứ trong ASP.NET Core là opt-in vì vậy tôi khá chắc chắn bạn sẽ cần phải thêm nó như middleware nhưng tôi không chắc chắn đó là được chuyển qua chưa. Hy vọng rằng tôi sai. –
Trong System.Web có một lớp được gọi là 'System.Web.CrossSiteScriptingValidation' có vẻ như giữ logic để xác định nếu yêu cầu không hợp lệ. Trông đủ đơn giản chỉ trong nháy mắt. Có lẽ điều đó có thể được sử dụng để gõ lên một số phần mềm trung gian nếu một cái gì đó không tồn tại. –
Dường như có lẽ requestvalidation đã bị xóa vì chúng ta không nên phụ thuộc vào nó để bảo mật, thay vào đó chúng ta nên xác thực đầu vào và mã hóa đầu ra không tin cậy http://forums.asp.net/t/2032496.aspx?Where+is+AllowHtml –