.Net Core
Если ваша цель состоит в том, чтобы иметь это как переменную в javascript, вы должны использовать @Json.Serialize()
с вашей точки зрения с JsonSerializerSettings.StringEscapeHandling = StringEscapeHandling.EscapeHtml
.
Пример:
<script>
var myQueryParams = @Json.Serialize(new { url = Model.SomeUserProvidedString }, new Newtonsoft.Json.JsonSerializerSettings() {StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeHtml });
</script>
myQueryParams.url
будет html-экранированным URL-адресом и запрещает использование XSS через Model.SomeUserProvidedString
.
.Net Framework MVC
Framework MVC не имеет @Json.Serialize()
- вы можете восстановить эту функцию, если ваш пакет включает в себя Newtonsoft.Json. Это основано на реализации * .Net Core с открытым исходным кодом @Json
HtmlString SerializeToJson(object obj)
{
var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(obj, new Newtonsoft.Json.JsonSerializerSettings() { StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeHtml })
return new HtmlString(jsonString);
}