2010-08-09 110 views
0

ASP.net提供的XSS(跨站點腳本)支持與AntiXss有什麼不同。 AntiXss是一個用於保護您的站點免受XSS攻擊的微軟庫。這兩個API看起來幾乎相似,看起來他們可以通過在代碼文件中找到替換來輕鬆地從一個切換到另一個。ASP.net中的反XSS支持Vs AntiXss Lib

哪一個可以提供更高的XSS安全性?使用ASP.net提供的內在支持是否可行?

回答

2

有幾個區別。首先,Microsoft AntiXss庫使用白名單編碼,這意味着所有字符都被編碼,除了所有已知安全的字符。 ASP.NET的標準編碼機制是黑名單。例如,對於HTML編碼,它僅編碼4個字符:<,>,&"(例如,它不編碼單引號)。請在this SO answer處查找可能出現的問題。

另一個區別是基本的ASP.NET編碼(使用HttpUtility)只能編碼HTML和URL。 AntiXss也允許編碼HTML屬性和JavaScript文本。在標準的ASP.NET中沒有安全的方法。

+0

如果我只查找html和url編碼,那麼使用ASP.net內在支持而不是創建對AntiXSS的依賴關係是否安全?你的建議是什麼? – 2010-08-09 07:13:14

+1

白名單編碼每個定義比黑名單編碼更安全,所以使用'AntiXss'庫是明智的。但是,當您使用ASP.NET 4.0時,可以讓框架在使用'HttpUtility.HtmlEncode'方法時使用'AntiXss'庫。這樣可以避免直接依賴庫,並允許整個ASP.NET控件堆棧使用此庫。有關更多信息,請參閱此博客文章:http://idunno.org/archive/2010/04/07/replacing-the-asp.net-encoder-with-antixss.aspx。 – Steven 2010-08-09 07:49:55

+1

你應該注意到,實現4.0類仍然意味着你必須有依賴。雖然框架確實有HtmlAttribute編碼,並且從4.0開始具有Javascript編碼,但它們仍然使用黑名單而不是白名單。當然,這意味着框架版本可能會更快,但AntiXSS本質上應該更安全。 – blowdart 2010-08-09 13:26:54

1

你可能會記住的一件事是釋放週期;內置於HttpUtility中的編碼只有在新版本的ASP.NET發佈後才能更新。如果有人在發佈後的XSS攻擊對抗HttpUtility的時候出現問題,那麼在發佈新版本的ASP.NET之前,您的應用程序會很脆弱。 AntiXSS有一個(更快)的發佈週期,這意味着當新的攻擊出現時,團隊可以更快地對它們做出反應,併發佈一個更新的AntiXSS來抵禦它們。