資訊安全基礎
某網頁應用程式把URL參數所指定的檔名,與公開用資料夾的名稱串接後讀取並顯示。若指定包含 ../ 的值作為檔名,公開用資料夾外的設定檔等就會被讀取。此攻擊的名稱與對策的組合,正確的是哪一項?
- A跨網站指令碼。輸出時跳脫 < 與 >
- B目錄遍歷。把檔名加長,使其不易被猜到
- C目錄遍歷。設計成不讓外部直接指定檔名,或將路徑正規化後確認其位於公開用資料夾內
查看答案與解析
正確答案:C. 目錄遍歷。設計成不讓外部直接指定檔名,或將路徑正規化後確認其位於公開用資料夾內
目錄遍歷(路徑遍歷)是利用 ../ 這類代表「上一層目錄」的符號,讀取或改寫應用程式預期之資料夾以外檔案的攻擊。原因在於把從外部收到的值直接用於檔案路徑。對策首先是設計成不讓外部直接指定檔名,而由伺服器端根據固定的編號或ID選擇檔案。必須使用外部的值時,要把路徑正規化(解析 ../ 等),確認結果位於允許的資料夾內。此外,把執行應用程式之帳號的權限設為最小,限制可讀取的檔案,就能縮小萬一發生時的損害。把檔名加長,也無法改變能以 ../ 跳出資料夾的事實。
- A. 以 ../ 讀取資料夾外檔案的攻擊不是XSS,無法以跳脫防止。
- B. 名稱正確,但把檔名加長,也無法阻止以 ../ 跳出資料夾。
- C. 正確。設計成不以外部的值組成路徑,或確認正規化後的路徑位於允許的資料夾內。