如何将字符串转换为HTML安全字符串

24

我正在创建一些动态生成的HTML

bldr.AppendLine("<a>");
string userText = user.Company;
bldr.AppendLine(userText);
bldr.AppendLine("</a>");
如何确保公司名称能够正确显示,但是如果他们尝试在名称中注入任何 HTML 代码,则会以纯文本形式显示。
例如,如果他们尝试使用名称“<script>alert("Do Bad!")</script>”,那么这将以纯文本形式出现在页面上。
但我还想避免“A&C”被转换为“A\u0026C”,这是当我使用某些方法时出现的情况。
HttpUtility.JavaScriptStringEncode(user.Company);
5个回答

25

您可以使用相同的类 HttpUtility,就像您在JavaScript中使用的一样。但是,对于html,例如:

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

还有一种相反的方法,使用HttpUtility.HtmlDecode(string)


14

一种不依赖于System.Web的替代方案:

System.Net.WebUtility.HtmlEncode()

1
这将字符编码为HTML实体,例如"&"变成了"&"。 - Skyfish

9
using System.Web;

var encoded = HttpUtility.HtmlEncode(unencoded);

3
您可以使用HttpUtility.HtmlEncode方法来实现:
var htmlString = HttpUtility.HtmlEncode(user.Company);

1

HtmlUtility类中有一个名为HtmlEncode的方法,它接受一个字符串参数并将其编码为安全的Html字符串。这是一个23个单词的描述,对我的答案没有任何信息贡献,这就是为什么我一开始没有包含它的原因。 - Rik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接