The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

安裝 UrlScan 需注意原始設定會破壞所有中文檔名的連結

這應該是我第二次替客戶處理 UrlScan 的問題了,就如同我在之前寫的文章裡提到的:「如果你為了要讓 Web 應用程式更安全,但卻不想研讀每個參數設定的話,強烈建議你乾脆就不要安裝,因為裝上去之後是有可能讓你的網站部分功能失效的」。果然如此,昨天又再次遇到客戶因為安裝了 UrlScan 導致網站許多頁面回應 HTTP 404 找不到網頁的錯誤。

昨天遇到的狀況是在測試機怎樣測試都沒問題,但安裝到正式主機後,就開始有許多頁面出現 HTTP 404 找不到網頁 的問題,以及有些檔名含有中文的檔案也都無法下載,這類問題我處理過��次:

第一次我利用 Process Monitor 查出有 urlscan.dll 的執行紀錄,直覺的想到應該是 UrlScan 的關係導致,修改 urlscan.ini 即可。[ 解決時間: 60 分鐘 ]

第二次我先查詢 IIS Log 發現剛剛的錯誤連結有 GET /Rejected-By-UrlScan 的字樣,那就不用說了,肯定是相同的問題,修改 urlscan.ini 即可。[ 解決時間: 5 分鐘 ]

C:\WINDOWS\system32\inetsrv\urlscan\UrlScan.ini 設定檔的前幾行有個 AllowHighBitCharacters 參數,預設設定值是 0,意思是指「不允許任何 UTF-8 或任何多位元組字元集(MBCS)的字元出現在路徑檔名中」,所以只要檔名或路徑有出現任何中文字,即便是使用 UrlEncode 編碼過,都會被 UrlScan 阻擋下來!

 在 C:\WINDOWS\system32\inetsrv\urlscan\UrlScan.ini 設定檔的前幾行有個 AllowHighBitCharacters 參數,預設設定值是 0,意思是指「不允許任何 UTF-8 或任何多位元組字元集(MBCS)的字元出現在路徑檔名中」,所以只要檔名或路徑有出現任何中文字,即便是使用 UrlEncode 編碼過,都會被 UrlScan 阻擋下來!

你只要將 AllowHighBitCharacters 設定成 1 再重新啟動 IIS ( iisreset ) 即可修復此問題。

所以,這是在安裝 UrlScan 之後最基本要做的第一個步驟,因為採用中文檔名還蠻常見的!

相關連結