何かが見つからないか、asp.net coreがユーザーテキストフィールドにスクリプトタグを投稿することができますか?以前のバージョンの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");
}
}
}
ビュー:Microsoftが決めたよう
@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 –