共用方式為


IIS 7.0 要求篩選和 URL 重寫

作者: Ruslan Yakushev

IIS 7.0 和更新版本包含以 IIS 6.0 的 URLScan ISAPI 篩選為基礎的要求篩選模組。 此課程模組可協助您加強網頁伺服器的安全性。

IIS 小組也發行了 IIS 的附加元件 URL 重寫模組,可提供規則型 URL 操作的功能。 即使 URL 重寫模組的主要用途是重寫要求的 URL 路徑,重寫模組也可以作為安全性強制執行工具,協助防止存取網站內容。

本文說明這兩個課程模組之間的差異,並提供用來加強網頁伺服器安全性的指引。

IIS 要求處理管線中的要求篩選和 URL 重寫

首先,請務必瞭解要求篩選模組和重寫模組如何插入 IIS 管線。 下圖顯示這兩個模組的相對順序:

從 H T T P 要求和 H T T P 回應取得的背景工作進程圖表。

要求篩選模組會藉由處理 BeginRequest 事件,在要求處理管線的開頭執行。 模組會評估要求中繼資料,例如標頭、查詢字串、內容長度等,以判斷要求中繼資料是否符合任何現有的篩選準則。 如果有相符專案,模組會產生 404 (找不到檔案) 回應,然後快捷方式處理 IIS 管線的其餘部分。

如果要求篩選模組尚未篩選要求,則會將要求傳遞至 IIS 管線中的下一個模組,這可能是 URL 重寫模組。 URL 重寫模組會針對重寫規則評估要求。 如果規則產生重新導向,或傳送自訂回應或中止要求,重寫模組會產生適當的回應,然後將 IIS 管線的其餘部分快捷方式。

請注意,要求篩選模組會放在 URL 重寫模組之前。 這是因為在 IIS 架構中,要求篩選模組會被視為保護 Web 服務器免于惡意要求的閘道管理員元件。 URL 重寫模組會被視為伺服器型 URL 操作元件,適用于已由要求篩選模組篩選的 URL。 您可以將 URL 重寫視為伺服器型應用程式邏輯,類似于 ASP.NET 也可以執行重寫或重新導向的應用程式。 要求篩選是第一道防線,而 URL 重寫器可以是更具體應用程式的第二個安全性屏障。 如需詳細資訊,請參閱 IIS 網站上的部落格文章「URL 重寫器和 IIS7 的要求篩選模組之間的互動」。

要求篩選和 URL 重寫之間的差異

要求篩選和 URL 重寫之間的概念差異如下:

  • 要求篩選是專為安全性案例所設計並優化。
  • URL 重寫可以套用至一組廣泛的案例;安全性案例只是其中一部分。

請記住,您可以比較可用於安全性案例之每個模組的功能。 您應該考慮下列類別:

  1. 篩選準則。 您可以使用哪種輸入來決定封鎖要求? 此外,哪些條件可用來表示要求封鎖邏輯?
  2. 要求封鎖動作。 當要求符合篩選準則時,可以執行哪些動作?
  3. 效能影響。 要求篩選和 URL 重寫如何影響 Web 服務器的效能?

篩選準則

下表列出可能的篩選準則,並說明每個模組如何支援它們。

條件 要求篩選模組支援嗎? URL 重寫模組支援嗎?
掃描要求的 URL 路徑 是,使用子字串搜尋 是,使用 RegEx 和萬用字元模式
檢查 URL 長度
掃描查詢字串 是,使用 RegEx 和萬用字元模式
檢查查詢字串長度
檢查 HTTP 動詞
檢查要求內容長度
掃描 HTTP 標頭 是,使用 RegEx 和萬用字元模式
檢查 HTTP 標頭長度
掃描伺服器變數
檢查寄件者的 IP 位址或主機名稱 否* Yes

* IIS 中的 IP 限制模組可用來封鎖來自特定 IP 位址和主機名稱的要求。

Request-Blocking動作

要求篩選模組只有一個動作,它會在要求符合篩選準則時執行。 動作是傳回狀態碼 404 (找不到檔案) 。

如果應該封鎖要求,URL 重寫模組會提供更廣泛的選項組,包括下列專案:

  1. 要求的 URL 可以重寫為一些其他 URL。 例如,若要防止影像熱連結,您可以針對來自協力廠商網域的任何要求,將 URL 重寫為預留位置影像檔。
  2. Web 用戶端可以重新導向至不同的 URL。
  3. 您選擇的 HTTP 狀態碼可以傳送至 Web 用戶端。 例如,您可能會針對符合特定篩選準則的要求傳送狀態 401 (未經授權) 回應。
  4. 卸載通訊端連線即可中止 HTTP 要求。 如此一來,Web 用戶端就完全不會取得 Web 服務器的相關資訊。

效能影響

這兩個模組都已實作,以盡可能對 IIS Web 服務器的效能產生最小影響。 不過,這些模組之間有下列重要的效能差異:

  • URL 重寫模組高度依賴正則運算式模式。 評估正則運算式是昂貴的作業,而且如果您定義許多複雜的重寫規則,您可能會看到對 Web 服務器的輸送量有明顯的影響。
  • 要求篩選模組不會使用正則運算式或任何其他模式比對。 它只會執行子字串搜尋,這可能會對 Web 服務器輸送量造成大幅的影響。

在要求篩選和 URL 重寫之間選擇

如果您要在要求篩選和 URL 重寫之間進行選擇,以強化 Web 服務器的安全性,一般規則是從要求篩選開始。 要求篩選已針對安全性案例優化,且其功能集可能就足以實作您的安全性需求。 如果您有要求篩選模組無法解決的需求,請使用 URL 重寫模組來實作該需求,並將其餘的安全性工作保留給要求篩選模組。 如此一來,您就可以讓伺服器處理最少的重寫規則,來降低 URL 重寫模組的效能影響。