2014-04-24 49 views
0

運行Veracode時,它產生了一堆指向InnerHtml的行的錯誤。如何修復InnerHtml的Veracode錯誤

例如,那些線之一是:

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

什麼存在着另一種解決它,而無需使用HTML服務器控件?

回答

0

你究竟想要做什麼,Veracode說什麼?

最有可能的是,如果傳遞到InnerHtml的數據不可信並且可能包含惡意JavaScript,那麼您最終可能會遭受任意代碼注入漏洞。

如果使用JavaScript createElement函數手動構建DOM元素以手動構建每個DOM元素,該工具可能不會抱怨。

+0

它抱怨以下消息:'在網頁(基本XSS)中不恰當地中和腳本相關的HTML標籤',我需要修復它,然後再次運行VeraCode –

+0

是的,這基本上是一個誤報工具。它抱怨說,您正在使用innerHTML函數注入HTML,該函數不會清理內容,因此存在安全風險。如果content字段包含攻擊者提供的內容並且HttpUtility.HtmlEncode函數中存在任何錯誤,則存在*合法安全風險。 – EricLaw

+0

有沒有什麼好的方法可以解決它? –

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格式呈現。在後面的代碼中對字符串進行編碼將使其呈現爲「未編碼字符串」,而不是RAW HTML,因爲它在呈現開始之前進行了編碼。