2014-05-21 18 views
10

Tworzę jakąś dynamicznie wygenerowany kod HTMLJak przekonwertować ciąg HTML bezpieczny ciąg

bldr.AppendLine("<a>"); 
string userText = user.Company; 
bldr.AppendLine(userText); 
bldr.AppendLine("</a>"); 

Skąd mogę mieć pewność, że bez względu na nazwę firmy jest, pojawi się tak jak powinien, ale także jeśli starają się wstrzykiwać dowolny HTML w nazwie będzie po prostu wyświetlany w postaci zwykłego tekstu.

Na przykład, jeśli próbowano użyć nazwy "<script>alert("Do Bad!")</script>", to dokładnie to, co pojawi się na stronie, w postaci zwykłego tekstu.

Ale chcę też, aby uniknąć "A & C" przekłada się "a \ u0026 C", który jest, co się dzieje, gdy używam

HttpUtility.JavaScriptStringEncode(user.Company); 

Odpowiedz

12

można wykorzystywać tę samą klasę HttpUtility trzeba użyć do JavaScriptu, ale dla html, dla próbki:

bldr.AppendFormat("<a>{0}</a>\n", HttpUtility.HtmlEncode(user.Company)); 

Istnieje również odwrotny sposób korzystania HttpUtility.HtmlDecode(string).

5
using System.Web; 

var encoded = HttpUtility.HtmlEncode(unencoded); 
1
+0

Jest to metoda zwana 'HtmlEncode' w klasie' HtmlUtility' która przyjmuje parametr ciąg i koduje je w formacie HTML bezpiecznego łańcucha. To jest 23-słowy opis, który nie dodaje żadnych informacji do mojej odpowiedzi, dlatego nie uwzględniłem go w pierwszej kolejności – Rik

6

Alternatywą bez uzależnienia do system.Web:

System.Net.WebUtility.HtmlEncode() 
Powiązane problemy