如何修复InnerHtml的Veracode错误



运行Veracode时,它生成了一堆指向InnerHtml行的错误。

例如,其中一行是:

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

有什么替代方案可以在不使用html服务器控件的情况下修复它?

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

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

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

我在ASP.NET Webforms应用程序中遇到过这个问题。解决这个问题相对简单。

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

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

YourHtmlElement.InnerHtml = "Your HTML content" ;

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

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

此修复程序将删除Veracode漏洞,并确保字符串呈现为HTML。在代码隐藏处对字符串进行编码将使其呈现为"未编码的字符串",而不是在呈现开始前进行编码的RAW HTML。

最新更新