今天便是Path traversal的最後一篇,同時也是Injection的最後一部份了,老實說我在Webgoat上沒看到太多path traversal的防護知識,所以資料是我自己找,並利用ai進行校稿的,可能會有錯誤,還請大家多多包涵
Path Traversal是一種利用輸入中摻入../之類路徑控制用字元,從而使網頁將其放入決定路徑的位置時將其判定為路徑的一部份,從而使滲透者能夠看到不該看的資料,又或是把資料放到不該放的地方
如果可以,設置僅能讓合法字元以及特定檔案類型通過的白名單,例如.jpg, .pdf之類的
如果是上傳檔案,使用例如Python內os.path.realpath()的指令,將所有符號解析後確保其代表的絕對路徑,再使用os.path.commonpath()比對來確保與原先設計時預計輸入的位置目錄相同
如果只是要取放在指定目錄的東西時,可以使用如python的os.path.basename()來解析掉../,只留下最終檔名,如果可以,最好再使用亂數將檔案進行改名以防萬一
最小權限化可以防止傷害擴大,如讓滲透者只能存取該目錄下的指定檔案,不能讀取系統核心檔案