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);
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)
.
Une alternative sans dépendance à System.Web:
System.Net.WebUtility.HtmlEncode()
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
Vous pouvez utiliser le HttpUtility.HtmlEncode
méthode:
var htmlString = HttpUtility.HtmlEncode(user.Company);