Как преобразовать строку в безопасную строку HTML
Я создаю некоторый динамически сгенерированный HTML
bldr.AppendLine("<a>");
string userText = user.Company;
bldr.AppendLine(userText);
bldr.AppendLine("</a>");
Как я могу гарантировать, что независимо от названия компании будет отображаться так, как должно, но также, если они попытаются ввести любой HTML-код в его имя, он просто появится в виде простого текста.
Например, если они попытались использовать имя "<script>alert("Do Bad!")</script>
", то точно, что будет отображаться на странице, в виде обычного текста.
Но я также хочу, чтобы "A и C" переводили на "A\u0026 C", что и происходит, когда я использую
HttpUtility.JavaScriptStringEncode(user.Company);
Ответы
Ответ 1
Вы можете использовать тот же класс HttpUtility
, который вы используете для javascript, но для html
для образца:
bldr.AppendFormat("<a>{0}</a>\n", HttpUtility.HtmlEncode(user.Company));
Существует также обратный путь с использованием HttpUtility.HtmlDecode(string)
.
Ответ 2
Альтернатива без зависимости от System.Web:
System.Net.WebUtility.HtmlEncode()
Ответ 3
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
Ответ 4
Вы можете использовать метод HttpUtility.HtmlEncode
:
var htmlString = HttpUtility.HtmlEncode(user.Company);
Ответ 5
HtmlUtility.HtmlEncode(string s)