網站從 IIS6 遷移至 IIS7 后的通配符腳本映射權限配置不當可能導致403錯誤
無廢話,直接上干貨。原來的網站(ASP.NET Form)是運行在 IIS6 上的,并且使用了通配符腳本映射使請求轉向防盜鏈模塊。今天將網站遷移到 IIS7 上。由于網站在Application_Start的時候試用了HttpContext做初始化,暫時讓網站運行在經典模式下。在添加了通配符腳本映射之后卻屢報403錯誤。
經查,原因如下:
(1)原有的被保護資源是虛擬目錄下的靜態文件,原虛擬目錄的訪問權限是“讀取”。
(2)在 IIS6 環境下,通配符腳本映射忽略 IIS 虛擬目錄的訪問權限設置,因此即使虛擬路徑并沒有設定“執行腳本”的權限,HttpModule也能夠正常的觸發執行。但是 IIS7 下這個行為有所變動,通配符腳本映射需要相應的目錄具有相應的權限。
(3)這樣由于我配置的通配符映射需要執行腳本,但是被保護的目錄僅有“讀取”權限從而導致了403錯誤。
修正如下:
(1)賦予被保護的靜態文件目錄“執行腳本”權限;
(2)將該目錄下的aspx,ascx等腳本映射均導向拒絕執行的模塊,防止產生安全問題。
搞定。
浙公網安備 33010602011771號