我正在创建一些动态生成的HTML
bldr.AppendLine("<a>");
string userText = user.Company;
bldr.AppendLine(userText);
bldr.AppendLine("</a>");
我如何确保无论公司的名称是什么,都会按原样出现,但如果他们试图以他们的名义注入任何HTML,它只会以纯文本显示。
例如,如果他们试图使用名称&#34; <script>alert("Do Bad!")</script>
&#34;这正是将以纯文本形式显示在页面上的内容。
但我也想避免&#34; A&amp; C&#34;转换为&#34; A&#34;这是我使用
时会发生的事情HttpUtility.JavaScriptStringEncode(user.Company);
答案 0 :(得分:16)
您可以使用与javascript相同的类HttpUtility
,但对于html
,请使用示例:
bldr.AppendFormat("<a>{0}</a>\n", HttpUtility.HtmlEncode(user.Company));
使用HttpUtility.HtmlDecode(string)
也有相反的方式。
答案 1 :(得分:9)
不依赖于System.Web的替代方案:
System.Net.WebUtility.HtmlEncode()
答案 2 :(得分:5)
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
答案 3 :(得分:2)
您可以使用HttpUtility.HtmlEncode
方法:
var htmlString = HttpUtility.HtmlEncode(user.Company);
答案 4 :(得分:1)