[IIS]Administration Guide for IIS6.0 (1) (多國語言版)
摘要
以ASP.NET為應用程式開發基礎框架的應用程式,所使用的Web container大多是IIS,因此我們對於IIS所能提供的服務絕對不能不了解,對IIS的描述出一本書大概都講不完,因此本文中會先針對我們時常使用到的一些設定做些詳述,讓大家對IIS的設定能夠更了然於胸。
IIS6.0基本設定
虛擬目錄設定
一般我們在設定好一個虛擬目錄時,我們可以在該虛擬目錄上點選滑鼠右鍵à[內容]。
點選後我們會看到以下的畫面,這畫面中有六個頁籤,我們姑且稱這六個頁籤中的設定為IIS的基本設定吧。
虛擬目錄頁籤-基本設定
根據[這個資源的內容應該來自:]選項我們有三種不同的設定方式,但以下我們僅先說明[這台電腦上的目錄(D)],其他兩項後續若有需要時我們再行補充:
- 本機路徑(C)
顧名思義,指的就是目前要設定的虛擬目錄所對應到實體機器位址,如下圖所示:
我們在所設定的本機路徑下可以找到我們虛擬路徑所對應的資料夾。
虛擬目錄頁籤-目錄安全設定
- 指令碼來源存取(T)/脚本来源存取/Script Source Access
授予這個權限將允許使用者存取原始碼。「指令碼來源存取」包含指令碼的原始碼,例如 Active Sever Pages (ASP) 程式中的指令碼。請注意,只有在您授予「讀取」或「寫入」權限後,才可以使用這個權限。
重要:啟用 [指令碼來源存取] 時,使用者或許能檢視敏感資訊,像是使用者姓名和密碼。 也能夠變更在 IIS 伺服器中執行的原始程式碼,嚴重影響伺服器的安全性和效能。
- 讀取(R)/读取/Read
授予這個權限將允許使用者檢視或下載檔案或資料夾和關聯內容。預設狀況下會選取「讀取」權限
- 寫入(W)/写入/Write
授予這個權限將允許使用者上傳檔案和關聯內容至伺服器上已啟用的資料夾,或變更可寫入檔案的內容或屬性。
- 瀏覽目錄(B)/浏览目录/Directory Browsing
授予這個權限將允許使用者檢視檔案的超文字清單和虛擬目錄的子資料夾。請注意,虛擬目錄不會顯示在資料夾清單中;使用者必須知道虛擬目錄的別名。
以上四項的關聯度較高,這邊我們統一做個說明,我們分成幾個案例來說明,以下先說明完全沒有啟用權限時的狀況:
我們簡單撰寫一個網頁,裡頭只放了一個HTML button,HTML中reference了一個JS file叫JScript.js,而畫面上的button按下時會去呼叫JScript.js中的一個AlertMsg() function,該function只會跳出一個alert,顯示TEST訊息,網頁與JScript.js的內容分別如下:
Default.aspx
JScript.js
依常理來說,這個寫法很一般,應該不會有什麼問題才對,但當我們實際執行時卻出現了以下錯誤訊息:
錯誤內容告訴我們,找不到AlertMsg這個function,為什麼?我們將該網頁的完整內容透過另存新檔,存檔類型選擇[網頁,完整](*.htm;*.html),一般使用這個選項,我們可以將網頁中所參考到的CSS/JS/Image等檔案一併下載下來。
但下載下來後,我們卻發現應該要存放CSS/JS/Image等檔案的資料夾中空空如也,JScript.js這個檔案並沒有被下載下來,這就回應了前面的錯誤訊息,JS file並沒有被下載到client端來,所以網頁執行時自然找不到AlertMsg function了。
這時我們將讀取(R)權限開啟,則程式便可以正常執行了,
我們再次將網頁另存下來也會發現,該JScript.js被正常的下載到client端來了,一般而言我們在設定虛擬目錄的權限時,預設讀取是一定會給予的,否則網頁無法正常的被運作。
寫入(W)的權限則代表使用者(這邊指IIS處理序)是否有權限可對虛擬目錄中的檔案進行屬性的變更,包含修改、刪除等權限,一般無需啟用,但若要進行檔案上傳,一般而言我們是會開啟該目錄的寫入權限,講到這邊,我們心中有的疑問,虛擬目錄會對應到實體目錄,虛擬目錄的權限由IIS中設定,而實體目錄的權限由NTFS(OS檔案系統)設定,當兩者有衝突時,以哪個為主?針對IIS與NTFS的權限說明,我們以以下三點作結:
我們可以以下圖來說明:
接著說明瀏覽目錄(B),未啟用時,若我們想要瀏覽網站的目錄,會出現以下的錯誤訊息:
而一旦我們啟用了瀏覽目錄(B)權限,我們就可以看到目前所在目錄下的檔案與目錄結構了:
接著說明兩個我們比較少使用到的設定:記錄查閱與編製這個資源的索引。
- 記錄查閱(V)/记录查阅/Log visits
選取即可將 IIS 設定為在記錄檔中記錄對此目錄的查閱。但是只有當此網站啟動記錄功能時,才會記錄使用者的查閱資料。
(IIS的Log可以在C:\WINDOWS\system32\Logfiles\W3SVC1找到,若關閉記錄查閱,則該站台的任何操作皆不會留下記錄,不建議)
- 編製這個資源的索引(I)/编制这个资源的索引/Index this resource
選取即可允許 Microsoft Indexing Service 將此目錄包含在網站的全文檢索索引中。
(設定此選項之前,必須透過 [控制台] 中的 [新增或移除程式] 項目啟用「索引服務」。)
虛擬目錄頁籤-應用程式設定
- 應用程式名稱(M)/应用程序名称/Application name
輸入包含應用程式檔案及子目錄的根目錄名稱。
- 啟動點/启动点/Starting point
顯示設定此應用程式的Metabase節點,簡單來說就是該虛擬目錄的根目錄。
- 執行權限(P)/ 执行权限/Execute permissions
此選項決定此站台的資源所允許的程式執行層級。
[無/None]:程式只能存取靜態檔案,如html、image..。
[僅指令碼/Scripts]:程式能執行各種指令碼,但無法執行網站上的執行檔。
[指令碼及執行檔/Scripts and Executables]:可以存取或執行所有的檔案類型,安全性問題大。
(備註:若啟用了寫入權限,同時又允許執行檔的執行,則使用者可上傳一個木馬程式,並透過server來執行,屆時造成的危險性極高。)
- 應用程式集區(N)/应用程序池/Application pool
從清單方塊上按一下與此主目錄關聯的應用程式集區,在IIS6.0以後,應用程式會關聯於一個應用程式集區,透過應用程式集區的分離,IIS6.0可以讓Server上的多個應用程式彼此之間的運作是分離的,一個應用程式crash不會影響到另外一個。
(應用程式集區的詳細說明會陸續補充)
設定(G)/配置/Configuration
按下設定鈕後,會出現如下圖的畫面,此畫面中又分為三個頁籤:
- 對應/映射/Mappings
將檔案的副檔名對應至處理這些檔案的程式或解譯器,所對應的應用程式包括 Active Server Pages (ASP) 應用程式、「網際網路資料庫連接器」(IDC) 應用程式、以及使用伺服器端包含 (Server Side Include,SSI) 指示詞的檔案。例如,當網頁伺服器接收到用戶端要求傳回的網頁其副檔名是 .asp 時,伺服器會使用應用程式對應來判定應該呼叫執行檔 asp.dll 來處理該網頁。您也可以使用此索引標籤來安裝會為每一個要求執行的萬用字元指令碼對應 ISAPI 應用程式,不論副檔名為何。
- 快取處理ISAPI擴充程式(C)/缓存ISAPI扩展/Cache ISAPI extensions,系統可將「網際網路伺服器 API」(ISAPI) DLL 載入並放在記憶體中,以後要處理用戶端的要求時,就不必再重新呼叫這個應用程式。
- 選項/选项/Options
針對此應用程式做進階設定,如逾時時間,是否啟用上層路徑等等。\
- 啟用作業狀態(S)/启用会话状态/Enabling Session State:即Session有效的時限,超過時限後Session將會time out。
- 啟用緩衝處理(B)/启用缓冲/ Enabling Buffering:應用程式上啟用緩衝處理,會指定是否將緩衝處理 ASP 應用程式的輸出。來自應用程式的所有輸出在回應到client之前都會集合在緩衝區中。如果您沒有啟用緩衝處理,指令碼的輸出在到達16K時會開始回應給client的瀏覽器,當回應的量大時將造成多次回應的延遲等待。
- 啟用上層路徑(P)/启用父路径/Enabling Parent Paths:啟用上層路徑會指定是否允許檢視此目錄的上層目錄內容。啟用此設定後可存取應用程式根目錄外的重要或機密檔案,所以如果設定成 true,將會造成潛在的安全性風險。在 IIS 6.0 中,預設不會再啟用上層路徑。
- 預設ASP語系(L)/默认ASP语言/ Default ASP Language:在ASP網頁中所使用的script語言,預設為VBScript。
- ASP指令碼逾時時間(M) /ASP 脚本超时/ ASP Script Timeout:當ASP指令被執行時,可執行的最長時限,如果超過此逾時時間,指令將會被中止,一般當我們需要進行檔案上傳時我們可能會調高這個數值,以避免檔案上傳失敗。
- 啟用並排組件(E)/启用并排集合/Enabling Side-by-Side Assemblies:使用狀況較少,在此不多作說明。
- 偵錯/调试/(Debugging)
設定是否啟用ASP網頁的指令碼除錯等,為了效能著想,建議不要在實際的系統執行環境重啟用偵錯。
- 啟用ASP伺服器端指令碼除錯(E)/ Enable ASP server-side script debugging:可偵錯ASP中屬於Server端的程式碼內容
- 啟用ASP用戶端指令碼除錯(N)/ Enable ASP client-side script debugging:可偵錯ASP中屬於Client端的程式碼內容,如Javascript…
- 將詳細的ASP錯誤訊息傳遞給用戶端(S):是否將ASP網頁執行時所發生的錯誤訊息完整的傳遞給Client,為了安全性問題,一般的Production環境不會這樣做,只有在偵錯環境才會這樣設定。
- 將下列文字錯誤訊息傳送給用戶端(T):只傳送方塊中的訊息給Client,告知有錯誤,但不說明是什麼錯誤,確保網頁安全。
結語
本想在一篇文章中將虛擬目錄的所有設定說明完全,但發現IIS有蠻多設定需要注意的,因此將切分數個章節分次說明。
游舒帆 (gipi) 探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。 |