![](/img/trans.png)
[英]Running HttpUtility.JavaScriptStringEncode on all references to Resources translations?
[英]Where is the equivalent of HttpUtility.JavaScriptStringEncode in .Net Core 1.1?
我發現自己需要從用戶在 .Net Core MVC 應用程序中添加的評論中清除 javascript。 在以前的框架中,這可以通過首先將您的字符串傳遞到 JavaScriptStringEncode 來實現。
var comment = HttpUtility.JavaScriptStringEncode(model.Comment);
但是,我一直無法在 .net core 中找到等價物。
這是 .net 核心中HttpUtility.JavaScriptStringEncode
的等效項:
using System.Text.Encodings.Web; //part of System.Text.Encodings.Web nuget package
...
var encodedText = JavaScriptEncoder.Default.Encode("TextToEncode");
視圖中有一個可用作@Json.Serialize
的助手。 使用 JSON.Net,考慮到在 Startup.cs 中配置的任何格式選項:
var foo = @Json.Serialize(model);
請記住,默認情況下這不會對 json 進行 XSS 清理! 但是,您可以使用重載來執行此操作,將StringEscapeHandling
選項指定為EscapeHtml
:
@using Newtonsoft.Json
...
var foo = @Json.Serialize(model, new JsonSerializerSettings { StringEscapeHandling = StringEscapeHandling.EscapeHtml });
您可以將其包裝到您自己的助手中,例如@Json.SafeSerialize
或@SafeJson.Serialize
。
我還沒有找到比你自己的助手更好的方法,而不強制默認 JsonOutputFormatter 通過 Startup 中的 json 選項以這種方式行事:
services.AddMvc().AddJsonOptions(opts => opts.SerializerSettings.StringEscapeHandling = StringEscapeHandling.EscapeHtml)
后一種方法的問題(以及為什么您可能更喜歡自定義幫助程序)是它還會影響從您的 API 返回的 JSON。
附注。 我在github上提出了這個。
您可以使用相同的方法,像剃刀上的這個例子一樣使用它:
@System.Web.HttpUtility.JavaScriptStringEncode(YourStringHere)
更新:
正如@Dai 所說,這只適用於 .NET Framework,而 ASP.NET Core 不鼓勵它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.