运行Veracode时,会产生一系列指向InnerHtml
行的错误。
例如,其中一行是:
objUL.InnerHtml += "<tr><td></td><td class=\"libraryEdit\">" + HttpUtility.HtmlEncode(dtitems.Rows[currentitem]["content"].ToString()) + "</td>";
如果不使用html服务器控件来修复它会有什么替代方法?
答案 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,因为它是在渲染开始之前编码的。