PHP htmlspecialcharacters equivalenti in .NET?
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?
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.