




















微軟最近推出了 Microsoft Anti-Cross Site Scripting Library V3.0 正式版(RTM),但在國內似乎沒看到許多人提到這套函示庫,就我來觀察有幾點可能的原因:
從 Wikipedia 上的 Cross-site scripting (XSS) 提到 XSS 有三種類型:
我們都知道在 ASP.NET 中預設都會阻擋可能會導致 XSS 攻擊的字串,例如 < 或 > 符號。相關資訊可參考:How To: Prevent Cross-Site Scripting in ASP.NET 與 Request Validation - Preventing Script Attacks,建議每位開發人員都應該閱讀這幾篇文章。
不過若因為專案所需,例如「網站後台」為了內容管理的需求可能就會將這項基本防護功能關閉,這時就有可能會讓你的資料庫被污染,以導致被攻擊的 HTML/Scripting 被輸出到前台網頁上。
有經驗的 ASP.NET 開發人員都知道如何撰寫阻擋 XSS 的程式碼,一個最簡單的也最常見的防護方式就是在頁面輸出變數時都一律加上 HttpUtility.HtmlEncode 方法,但頁面多或開發人員多的時候可就不見得頁面每一個地方都能記得加上,除非你有錢購買靜態程式碼分析軟體定期分析你的 ASP.NET 專案。
從上述得知,你能夠在 ASP.NET 專案中做出的努力都稱為:「黑名單防護策略」,也就是針對特定網頁明確寫程式阻擋 XSS 攻擊,沒寫到的地方就破功了。
而採用 Anti-XSS Library 最大的不同就在於它採用「白名單防 護策略」,預設將會以最嚴格的設定預防所有潛在的 XSS 攻擊,只有特定編碼的字元、允許的特殊符號可以允許通過 HTTP 傳輸,任何在設定以外的字元或發現潛在的 XSS 攻擊行為時就會對相關字元進行編碼,例如:HtmlEncode、UrlEncode、LDAP Encode、XPath Encode、… 等。
在安裝的時候預設安裝路徑為:C:\Program Files\Microsoft Information Security\Microsoft Anti-Cross Site Scripting Library v3.0\ ,過程中提供兩個選項讓你安裝:

分別說明如下:
Anti-Cross Site Scripting Library
Security Runtime Engine (SRE)
<?xml version="1.0" encoding="utf-8"?>
<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--This section lists the controls and encoding contexts supported by SRE-->
<ControlEncodingContexts>
<ControlEncodingContext FullClassName="System.Web.UI.WebControls.Label" PropertyName="Text" EncodingContext="Html" />
<ControlEncodingContext FullClassName="System.Web.UI.WebControls.HyperLink" PropertyName="Text" EncodingContext="Html" />
</ControlEncodingContexts>
<!--This section can be used to configure double encoding support-->
<DoubleEncodingFilter Enabled="True" />
<!--This section can be used to configure encoding for derived controls-->
<EncodeDerivedControls Enabled="True" />
<!--This section can be used to configure color coding of the output -->
<MarkAntiXssOutput Enabled="False" Color="Blue"/>
<!--This section includes the configuration for suppressing SRE for the listed files and folders-->
<Suppressions>
<Exclude Path="/Page_1.aspx" />
<Exclude Path="/ExcludedDirectory/Page_2.aspx" />
</Suppressions>
</Configuration>
套用 Security Runtime Engine (SRE) HTTP module 會對網站執行效能帶來一些衝擊,不過衝擊並不大,基於安全考量應該可以接受。
在 "C:\Program Files\Microsoft Information Security\Microsoft Anti-Cross Site Scripting Library v3.0\Sample Application" 目錄下有個簡易的範例程式,可以讓你徹底感受這套軟體的威力,在 web.config 裡的 validateRequest 設定為 false 的情況下,也能夠讓你的網站遠離 XSS 攻擊的威脅。
ASP.NET MVC 專案建議可以使用 Anti-Cross Site Scripting Library 搭配先前介紹的 CAT.NET 進行網站安全防護與安全檢測。
相關連結
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。