Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

解決 Windows Server 2008 IIS 7 無法顯示驗證碼 (CAPTCHA) 問題

編輯:Windows Server 教學

現象

Server 2008 安裝 IIS 7 後,ASP.NET / 經典 ASP 網站運行正常,但登入頁面的驗證碼圖片始終顯示紅叉或空白,無任何錯誤訊息。

根因分析

IIS 7 預設 「啟用父路徑」 (Enable Parent Paths) 為 False。許多傳統 ASP 驗證碼元件 (如 `captcha.asp`、第三方 COM 元件) 使用相對路徑 `../` 存取字型檔、暫存目錄或 Session 狀態,父路徑被封鎖導致檔案讀取失敗,進而無法產生圖片。

解決步驟

  1. 開啟 Internet Information Services (IIS) 管理員。
  2. 左側連線面板展開伺服器節點 → 網站 → 選取目標網站 (如「Default Web Site」)。
  3. 中間功能視圖雙擊 ASP 圖示 (若無,表示未安裝 ASP 功能,需「新增角色服務」勾選 ASP)。
  4. 在「ASP」設定頁面,展開 行為 區段,找到 啟用父路徑,將預設 False 改為 True。
  5. 右側動作面板點擊 套用。

IIS 管理員
圖 1:IIS 管理員介面 (示意)

驗證

重新整理登入頁面,驗證碼圖片即可正常顯示。若仍異常,檢查:

  • 應用程式集區身分識別是否有讀取字型/暫存目錄權限。
  • ASP 程式碼是否使用 `Server.MapPath("../")` 等相對路徑。
  • 錯誤頁面設定為「詳細錯誤」以獲取具體例外訊息。

補充:IIS 7 安裝與 ASP 功能啟用回顧

  1. 伺服器管理員 → 角色 → 新增角色 → Web 伺服器 (IIS)。
  2. 角色服務頁面務必勾選 ASP、ASP.NET、ISAPI 延伸模組、ISAPI 篩選器 等傳統相容功能。
  3. 完成安裝後,管理工具將出現「Internet Information Services (IIS) 管理員」。

安全性提醒

啟用父路徑雖解決相容性,但允許腳本存取上層目錄,潛在風險:

  • 確保網站根目錄外無敏感檔案。
  • 應用程式集區使用最低權限身分識別 (ApplicationPoolIdentity)。
  • 定期掃描網站目錄異常檔案。

結語

IIS 7 預設安全性提升導致「啟用父路徑」關閉,為傳統 ASP 驗證碼元件常見相容性陷阱。單一設定變更即可恢復功能,配合最小權限原則即可兼顧安全與相容。

Copyright © Windows教程網 All Rights Reserved