如何在webforms中使用Html.Encode

时间:2010-10-25 21:16:05

标签: asp.net security webforms html-encode

我有一个ASP.NET Web窗体应用程序。有一个带有TextBox的页面,用户在这些页面中输入搜索词,用于查询数据库。

我知道我需要阻止JavaScript注入攻击。我该怎么做?

在MVC中,我会使用Html.Encode。它似乎没有在Web窗体中被识别。

谢谢!

5 个答案:

答案 0 :(得分:19)

您可以使用HttpUtility.HtmlEncode

答案 1 :(得分:8)

如果您使用的是ASP.NET 4或更高版本,则可以使用以下语法:

<%: Model.Username %>

将对表达式进行HTML编码。 Scott Gu explains the benefit of this syntax:

  

我们选择&lt;%:%&gt;语法,以便快速替换&lt;%=%&gt;的现有实例代码块。它还使您可以轻松搜索代码库中的&lt;%=%&gt;用于查找和验证您在应用程序中未使用HTML编码的任何情况的元素,以确保您具有正确的行为。

答案 2 :(得分:5)

在网络表单上,您可以调用

HttpUtility.HtmlEncode(foo);

小心不要双重编码。

答案 3 :(得分:3)

您可以使用Server.HtmlEncode(转换为HttpServerUtility.HtmlEncode),但Microsoft有一个更好的网络保护库名为AntiXSS,您可以从CodePlex下载。它包含一个使用白名单方法HtmlEncoding的实用程序(更安全,更好,recommended by OWASP虽然它们指向older version)。它还有一些工具,可以让你获得安全的HTML片段等。

但是,如果您不注意其他任何内容,请查看OWASP top 10。听起来你只是在抓住Web应用程序安全性的表面,这是最好的资源。跨站点脚本攻击只是您需要防范的一大部分内容之一。

如果您必须处理任何类型的合规性(PCI,红旗等),这也是您需要遵守的那个

答案 4 :(得分:0)

在Web Froms,.Net v4.0及更高版本上,您可以按以下方式使用:

<%
   string notificationIcon = "<i class='fa fa-plus fa-icon fa-stack-right-top'></i>";
%>
<%: new HtmlString(notificationIcon) %>

Microsoft Doc Link