0
有一個腳本可以從用戶處獲取目錄。如何檢查用戶是否試圖獲得比公共文件夾更高的級別?(Rails)測試用戶是否試圖獲取根目錄
例如,我試圖檢測空字符串,所以如果我輸入"?directory=/"
=>我進入根目錄。比我試圖檢查公用文件夾的方式是否在路徑中。再次=>"?directory=/home/user/app/public/../../../../../"
=>再次我在根。
如何測試並拒絕訪問?
有一個腳本可以從用戶處獲取目錄。如何檢查用戶是否試圖獲得比公共文件夾更高的級別?(Rails)測試用戶是否試圖獲取根目錄
例如,我試圖檢測空字符串,所以如果我輸入"?directory=/"
=>我進入根目錄。比我試圖檢查公用文件夾的方式是否在路徑中。再次=>"?directory=/home/user/app/public/../../../../../"
=>再次我在根。
如何測試並拒絕訪問?
試試這個:
def path_valid?(path, base = Rails.public_path)
expanded_path_name = Pathname.new(path).realpath.to_s
expanded_path_name.starts_with? base
end
Pathname#realpath
將解決路徑爲絕對路徑,以及做符號鏈接的分辨率。這將使您能夠精確地測試要操作的文件的路徑,並確保它位於給定路徑內。
這聽起來像你試圖做的只是要求被剝削。 –
這就是爲什麼我問,這是一個明顯的安全漏洞。 – Roman
有沒有另外一種方法可以不需要像那樣通過目錄?你在做什麼? –