Domanda

PHP ha un'ottima funzione chiamata htmlcaratteri speciali() dove gli passi una stringa e sostituisce tutti i caratteri speciali dell'HTML con i loro equivalenti sicuri, è Quasi uno sportello unico per la sanificazione degli input.Molto bello vero?

Bene, esiste un equivalente in una qualsiasi delle librerie .NET?

In caso contrario, qualcuno può collegarsi a esempi di codice o librerie che lo fanno bene?

È stato utile?

Soluzione

Prova questo.

var encodedHtml = HttpContext.Current.Server.HtmlEncode(...);

Altri suggerimenti

Non so se esiste una sostituzione esatta, ma esiste un metodo HtmlUtility.HtmlEncode che sostituisce i caratteri speciali con i loro equivalenti HTML.Un cugino stretto lo è HtmlUtility.UrlEncode per il rendering degli URL.Potresti anche utilizzare controlli di convalida come RegularExpressionValidator, RangeValidator, E System.Text.RegularExpression.Regex per essere sicuro di ottenere ciò che desideri.

In realtà, potresti provare questo metodo:

HttpUtility.HtmlAttributeEncode()

Perché?Citando il Pagina HtmlAttributeEncode nei documenti MSDN:

Il metodo HtmlAttributeEncode converte solo virgolette ("), e commerciale (&) e parentesi angolari sinistre (<) in entità di carattere equivalenti.È notevolmente più veloce del metodo HtmlEncode.

In aggiunta alle risposte fornite:Quando si usa Motore di visualizzazione Razor (che è il motore di visualizzazione predefinito in ASP.NET), l'utilizzo del carattere "@" per visualizzare i valori codificherà automaticamente il valore visualizzato.Ciò significa che non è necessario utilizzare la codifica.

D'altra parte, quando tu non vuoi che il testo venga codificato, devi specificarlo esplicitamente (usando @Html.Raw).Il che, a mio parere, è positivo dal punto di vista della sicurezza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top