【问题标题】:Where is the equivalent of HttpUtility.JavaScriptStringEncode in .Net Core 1.1?.Net Core 1.1 中 HttpUtility.JavaScriptStringEncode 的等价物在哪里?
【发布时间】:2017-03-11 06:40:42
【问题描述】:

我发现自己需要清除用户在 .Net Core MVC 应用程序中添加的 cmets 中的 javascript。在以前的框架中,这可以通过首先将字符串传递给 JavaScriptStringEncode 来实现。

var comment = HttpUtility.JavaScriptStringEncode(model.Comment);

但是,我无法在 .net 核心中找到等效项。

【问题讨论】:

  • 你可以通过它的父母调用它来使用相同的方法:@System.Web.HttpUtility.JavaScriptStringEncode(YourStringHere)

标签: javascript asp.net-core-mvc


【解决方案1】:

这是 .net 核心中 HttpUtility.JavaScriptStringEncode 的等价物:

using System.Text.Encodings.Web; //part of System.Text.Encodings.Web nuget package
...

var encodedText = JavaScriptEncoder.Default.Encode("TextToEncode");

【讨论】:

    【解决方案2】:

    在视图中有一个helper 可用作@Json.Serialize。它使用 JSON.Net,考虑到 Startup.cs 中配置的任何格式选项:

    var foo = @Json.Serialize(model);
    

    请记住,这默认情况下不会对 json 进行 XSS 清理!但是,您可以使用允许您执行此操作的重载,将 JSON.Net 的 StringEscapeHandling 选项指定为 EscapeHtml

    @using Newtonsoft.Json
    
    ...
    
    var foo = @Json.Serialize(model, new JsonSerializerSettings { StringEscapeHandling = StringEscapeHandling.EscapeHtml });
    

    您可以将其包装到您自己的助手中,例如 @Json.SafeSerialize@SafeJson.Serialize

    我还没有找到比您自己的助手更好的方法,而无需通过 Startup 中的 json 选项强制默认的 JsonOutputFormatter 以这种方式运行:

    services.AddMvc().AddJsonOptions(opts => opts.SerializerSettings.StringEscapeHandling = StringEscapeHandling.EscapeHtml)
    

    后一种方法的问题(以及您可能更喜欢自定义帮助程序的原因)是它还会影响从您的 API 返回的 JSON。

    附言。我在github 上提出了这个问题。

    【讨论】:

      【解决方案3】:

      你可以使用同样的方法,像剃刀上的这个例子一样使用它:

      @System.Web.HttpUtility.JavaScriptStringEncode(YourStringHere)
      

      更新:

      正如@Dai 所说,这只有在你的目标是 .NET Framework 时才有效,而 ASP.NET Core 不鼓励使用它。

      【讨论】:

      • 这在 .NET Core 中不起作用,因为 System.Web.dll 不可用。如果您的目标是 .NET Framework 而不是 .NET Core,并且您的项目引用 System.Web.dll(不鼓励使用 ASP.NET Core),这仅适用于 ASP.NET Core。
      • 这在最新的核心版本中完美运行
      猜你喜欢
      • 1970-01-01
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多