Как преобразовать строку в безопасную строку 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);