ASP.Net MVC 如何将 HTML 标记替换为浏览器中不符的内容

本文关键字:浏览器 替换 MVC Net HTML ASP | 更新日期: 2023-09-27 17:56:01

如果你生成一个HTML字符串,比如

ViewBag.FinalHTML="<a href='"http://stackoverflow.com'">StackOverFlow</a>";

然后尝试使用以下代码在视图中显示它:

This is the best Q&A for programming questions: @ViewBag.FinalHTML

那么结果将是这样的:

This is the best Q&A for programming questions: <a href="http://stackoverflow.com">StackOverFlow</a>

(我知道我怎样才能做到这一点。我还有一个问题!

ASP.Net MVC是如何做到的?

ASP.Net MVC 如何将 HTML 标记替换为浏览器中不符的内容

@ 函数使用 HttpUtility.HtmlEncode 方法对传递给它的所有内容进行安全编码。

如果不希望发生此自动编码,请使用 @Html.Raw 方法:

@Html.Raw(ViewBag.FinalHTML)

显然,通过这样做,您应该确保此FinalHTML绝对不会来自用户输入,而是由您在服务器上生成的。否则,您将在网站上打开一个巨大的XSS漏洞。