web-dev-qa-db-fra.com

Comment convertir une chaîne en chaîne sécurisée HTML

Je crée un HTML généré dynamiquement

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

Comment puis-je m'assurer que quel que soit le nom de l'entreprise, apparaîtra comme il se doit, mais aussi s'ils essaient d'injecter du code HTML dans leur nom, il apparaîtra simplement en texte brut.

Par exemple, s'ils ont essayé d'utiliser le nom "<script>alert("Do Bad!")</script>", c'est exactement ce qui apparaîtra sur la page, en texte brut.

Mais je veux aussi éviter que "A & C" se traduise par "A\u0026 C", ce qui se passe lorsque j'utilise

HttpUtility.JavaScriptStringEncode(user.Company);
13
TruthOf42

Vous pouvez utiliser la même classe HttpUtility que vous avez utilisée pour javascript, mais, pour html, par exemple:

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

Il y a aussi l'inverse en utilisant HttpUtility.HtmlDecode(string).

17
Felipe Oriani

Une alternative sans dépendance à System.Web:

System.Net.WebUtility.HtmlEncode()
10
MarkO
using System.Web;

var encoded = HttpUtility.HtmlEncode(unencoded);
5
Manfre

Vous pouvez utiliser le HttpUtility.HtmlEncode méthode:

var htmlString = HttpUtility.HtmlEncode(user.Company);
2
ChrFin
1
Rik