2017-03-11 33 views
7

Kendimi bir .Net Core MVC uygulamasında kullanıcılar tarafından eklenen yorumlar dışında javascript'i temizleme ihtiyacı buldum. Önceki çerçevelerde bu, ilk önce string'inizi JavaScriptStringEncode'a geçirerek başarılabilir. Bununla birlikte, .net çekirdeğindeki eşdeğerini bulamadım. Bununla birlikte, .net çekirdeği eşdeğerini bulamadım.HttpUtility.JavaScriptStringEncode öğesinin karşılığı .Net Core 1.1 nedir?

cevap

4

Görünümlerde @Json.Serialize olarak kullanılabilen bir helper vardır. Yani hesaba Startup.cs yapılandırılmış herhangi bir biçimlendirme seçeneği alarak Json.NET kullanır: akılda

var foo = @Json.Serialize(model); 

Ayı bu varsayılan tarafından json XSS-sterilize yok!

@using Newtonsoft.Json 

... 

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

Belki @Json.SafeSerialize veya @SafeJson.Serialize gibi kendi yardımcı içine sarabilirsiniz: Eğer EscapeHtml olarak Json.NET ait StringEscapeHandling seçeneği belirterek, bu do sağlayan bir aşırı kullanabilirsiniz Ancak.

ben devreye alma json seçenekleri arasında bu şekilde davranmaya varsayılan JsonOutputFormatter zorlamadan kendi yardımcıları daha iyi bir yol bulmuş değil:

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

ikincisi yaklaşımla sorunu (ve neden olabilir Özel yardımcısını tercih edin), API'larınızdan döndürülen JSON'ları da etkilemesidir.

PS. Bunu github numaralı telefondan yükselttim.

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

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

.net çekirdekte HttpUtility.JavaScriptStringEncode bir eşdeğeri
İlgili konular