Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何修复InnerHtml的Veracode错误_C#_Html_Htmlcontrols - Fatal编程技术网

C# 如何修复InnerHtml的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

运行Veracode时,它生成了一系列错误,这些错误指向
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
属性。