C# 如何修复InnerHtml的Veracode错误
运行Veracode时,它生成了一系列错误,这些错误指向C# 如何修复InnerHtml的Veracode错误,c#,html,htmlcontrols,C#,Html,Htmlcontrols,运行Veracode时,它生成了一系列错误,这些错误指向InnerHtml中的行 例如,其中一行是: objUL.InnerHtml += "<tr><td></td><td class=\"libraryEdit\">" + HttpUtility.HtmlEncode(dtitems.Rows[currentitem]["content"].ToString()) + "</td>"; objUL.InnerHtml+=“”+H
InnerHtml
中的行
例如,其中一行是:
objUL.InnerHtml += "<tr><td></td><td class=\"libraryEdit\">" + HttpUtility.HtmlEncode(dtitems.Rows[currentitem]["content"].ToString()) + "</td>";
objUL.InnerHtml+=“”+HttpUtility.HtmlEncode(dtitems.Rows[currentitem][“content”].ToString())+“”;
如果不使用html服务器控件,有什么替代方法可以修复它?您到底想做什么,Veracode到底说了什么 最有可能的情况是,它抱怨说,如果传入InnerHtml的数据不受信任并且可能包含恶意JavaScript,则最终可能会出现任意代码注入漏洞
如果您使用JavaScript
createElement
函数手动构建DOM元素来手动构建每个DOM元素,则该工具可能不会抱怨。我在ASP.NET Webforms应用程序中遇到了这个问题。解决这个问题的方法相对简单
从NuGet Package Manager安装HtmlSanitizationLibrary,并在应用程序中引用。
在代码隐藏处,请按以下方式使用sanitizer类
例如,如果当前代码看起来像这样
YourHtmlElement.InnerHtml = "Your HTML content" ;
然后,将其替换为以下内容:
string unsafeHtml = "Your HTML content";
YourHtmlElement.InnerHtml = Sanitizer.GetSafeHtml(unsafeHtml);
此修复程序将删除Veracode漏洞,并确保字符串呈现为HTML。在“代码隐藏”处对字符串进行编码将使其呈现为“未编码字符串”,而不是在呈现开始之前对其进行编码的原始HTML 它抱怨如下消息:
网页中与脚本相关的HTML标记的不正确中和(基本XSS)
我需要在再次运行VeraCode之前修复它是的,这基本上是工具中的误报。它抱怨说您正在使用innerHTML函数注入HTML,该函数无法清理内容,因此存在安全风险。如果content
字段包含攻击者提供的内容,并且HttpUtility.HtmlEncode
函数中存在任何漏洞,则存在合法的安全风险。这取决于您如何定义好的方法。使用createElement(“td”)
将允许您创建一个可以添加到DOM中的td,然后您可以使用不受信任的数据设置其textContent
属性。