0

运行 Veracode 时,它​​生成了一堆错误,指向带有InnerHtml.

例如,其中一行是:

objUL.InnerHtml += "<tr><td></td><td  class=\"libraryEdit\">" + HttpUtility.HtmlEncode(dtitems.Rows[currentitem]["content"].ToString()) + "</td>";

在不使用 html 服务器控件的情况下,有哪些替代方法可以修复它?

4

2 回答 2

0

您到底想做什么,Veracode 到底说了什么?

最有可能的是,如果传递到 InnerHtml 的数据不受信任并且可能包含恶意 JavaScript,那么您最终可能会遇到任意代码注入漏洞。

如果您使用 JavaScriptcreateElement函数手动构建 DOM 元素来手动构建每个 DOM 元素,该工具可能不会抱怨。

于 2014-04-24T16:48:27.800 回答
0

我在我的 ASP.NET Webforms 应用程序中遇到了这个问题。对此的修复相对简单。

从 NuGet 包管理器安装 HtmlSanitizationLibrary 并在您的应用程序中引用它。在后面的代码中,请按以下方式使用 sanitizer 类。

例如,如果当前代码看起来像这样,

YourHtmlElement.InnerHtml = "Your HTML content" ;

然后,将其替换为以下内容:

string unsafeHtml = "Your HTML content"; 
YourHtmlElement.InnerHtml = Sanitizer.GetSafeHtml(unsafeHtml);

此修复将消除 Veracode 漏洞并确保字符串呈现为 HTML。在后面的代码中对字符串进行编码会将其呈现为“未编码的字符串”,而不是 RAW HTML,因为它是在渲染开始之前进行编码的。

于 2016-12-19T10:03:04.197 回答