【问题标题】:Disable *ALL* Automatic HTML Escaping in ASP.Net/Core MVC在 ASP.Net/Core MVC 中禁用 *ALL* 自动 HTML 转义
【发布时间】:2019-04-16 23:12:02
【问题描述】:

在 ASP.Net/Core MVC 中,当您在 Razor 视图中回显字符串变量时,会发生自动 HTML 转义。例如:

<div>@("<b>Hello</b>")</div>

输出为

<b>你好</b>

如何在 ASP.Net/Core MVC 中默认禁用此功能,无需在任何地方都必须使用 Html.Raw()、WriteLiteral()、new HtmlString() 等帮助程序等等?

我了解此功能背后的原因,但我正在尝试其他转义方法。

【问题讨论】:

  • 它存在是有原因的,你不能关闭它。
  • 如果你不想要 Razor 的功能,你可能想要not use Razor
  • 我认为您可以通过将服务集合中的服务System.Text.Encodings.Web.HtmlEncoder 替换为假服务来做到这一点。它被注入here。但它可能有一些副作用,因为它可以在 aspnet 框架的其他地方使用
  • 辅助方法有什么问题?
  • @ibubi 因为如果你为来自数据库的所有数据启用 HTML 转义,它就不需要 Razor 在任何地方转义它。现在你必须记住在你回显变量的每个地方都使用辅助方法,否则 Razor 会双重转义它。

标签: asp.net asp.net-mvc asp.net-core .net-core escaping


【解决方案1】:

你不能禁用它。

ASP.Net/Core MVC 设计用于防止Injection(Web 应用程序安全),@ 使用频繁,因此需要防止HTMLJavascript 注入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 2019-03-10
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多