如何修复InnerHtml的Veracode错误

时间:2014-04-24 16:41:44

标签: c# html htmlcontrols

运行Veracode时,会产生一系列指向InnerHtml行的错误。

例如,其中一行是:

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

如果不使用html服务器控件来修复它会有什么替代方法?

2 个答案:

答案 0 :(得分:0)

你究竟想做什么,以及Veracode到底说了什么?

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

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

答案 1 :(得分:0)

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

从NuGet Package Manager安装HtmlSanitizationLibrary并在您的应用程序中引用它。 在后面的代码中,请按以下方式使用清洁剂类。

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

YourHtmlElement.InnerHtml = "Your HTML content" ;

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

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

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