2012-06-23 63 views

回答

2

此方法與StackExchange不同,但我發現AntiXSS 4.x庫是一種簡單的方法來清理輸入以允許「安全」的HTML。

http://www.microsoft.com/en-us/download/details.aspx?id=28589你可以在這裏下載一個版本,但我把它鏈接到了有用的DOCX文件。我的首選方法是使用NuGet包管理器來獲取最新的AntiXSS包。

您可以使用4.x AntiXss庫中的HtmlSanitizationLibrary程序集。請注意,GetSafeHtml()位於Microsoft.Security.Application.Sanitizer下的HtmlSanitizationLibrary中。

content = Sanitizer.GetSafeHtml(userInput); 

這可以在保存到數據庫之前完成。優點是立即刪除惡意內容,而不必擔心在輸出時出現惡意內容。缺點是它不會處理任何現有的數據庫內容,並且您在進行數據庫更新時必須應用這些內容。

另一種方法是在每次輸出內容時使用此方法。

我很想聽聽首選方法是什麼。

+1

我發現這對於清理WYSIWYG輸入來說過於激進。鏈接被拆分爲。 –

+1

正確 - 我不想要AntiXss編碼。但是,AntiXss庫包含清理庫。但是,4.2版似乎「打破了一切」。此鏈接在StackOverflow鏈接到很多有用的東西:http://stackoverflow.com/questions/3959136/antixss-htmlencode-vs-antixss-getsafehtmlfragment包括這個解決方法,它是使用白名單(你可以自己定製它)清潔:http://eksith.wordpress.com/2012/02/13/antixss-4-2-breaks-everything/ –

0

您可以嘗試JSoup解析器,它可以同時清理HTML輸入,還可以提供許多功能。 你可以訪問http://jsoup.org/瞭解JSoup的更多細節,並從那裏下載二進制文件。 它提供了DOM方法遍歷HTML樹並獲得所需的元素。

儘管清理HTML生成的代碼以防止XSS攻擊是一種很好的做法,但我強烈建議避免使用任何解析器通過清理HTML輸入來避免XSS附加。 如果您的HTML樹非常大,那麼響應時間將會增加。爲了清理HTML樹,您應該確保無論用戶在FORM中輸入的內容是否合適,以及是否符合期望值。

您可以訪問www.owasp.org以瞭解有關如何避免XSS攻擊的更多信息。該站點爲您提供了可能的備忘單,以確保您的HTML樹不受任何XSS攻擊。

0

ASP.NET HttpUtility.Htmlencode()爲您提供。 但是,如果你想阻止危險的腳本,首先不要插入它到您的數據庫。首先,在插入數據庫之前清理HTML文本。

我發現了一類是爲你做它:http://eksith.wordpress.com/2012/02/13/antixss-4-2-breaks-everything/

它工作正常,你可以添加新的標籤和屬性的消毒劑定製的白名單。

注意:Microsoft Sanitizer和Anti-XSS Library對我無用。也許你也可以嘗試一下。