Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

ASP 報錯「不允許 Path 字符 '..'」:IIS 父路徑啟用全流程解析

編輯:關於伺服器

現象還原

客戶網站後台無法訪問,本地調試正常。瀏覽器拋出:

Server.MapPath() 錯誤 'ASP 0175 : 80004005'
不允許的 Path 字符
/0709/dqyllhsub/news/OpenDatabase.asp,行 4
在 MapPath 的 Path 參數中不允許字符 '..'

代碼中使用 Response.Redirect 相對路徑(含 ../),因 IIS 預設禁用父路徑導致解析失敗。

根因定位

IIS 6.0+ 預設 「啟用父路徑」= False,出於安全考慮防止目錄遍歷攻擊。但大量傳統 ASP 應用依賴 ../include/conn.asp 相對引用,直接導致 500 內部錯誤。

兩種解決路徑(擇一)

方案 A:開啟父路徑(快速修復)

  1. IIS 管理器 → 網站屬性 → 主目錄 → 配置 → 選項
  2. 勾選「啟用父路徑」→ 確定 → 重啟網站
  3. 適用:舊應用改造成本高、內網可信環境

方案 B:代碼重構為絕對路徑(根治)

  1. 將 ../conn/db.asp 改為 /include/conn/db.asp 或虛擬目錄映射路徑
  2. 配合 Server.MapPath("/") 獲取站點物理根路徑
  3. 適用:新開發、安全合規要求高、長期維護項目

安全加固建議

  • 若必須開啟父路徑,請同時配置 web.config requestFiltering 封鎖 ..、: 等敏感字符。
  • 啟用 ASP 錯誤詳細信息僅限本地顯示,生產環境返回友好錯誤頁。
  • 定期掃描代碼庫中的相對路徑引用,納入代碼審查清單。
Copyright © Windows教程網 All Rights Reserved