2013-07-18 39 views
0

有一個腳本可以從用戶處獲取目錄。如何檢查用戶是否試圖獲得比公共文件夾更高的級別?(Rails)測試用戶是否試圖獲取根目錄

例如,我試圖檢測空字符串,所以如果我輸入"?directory=/" =>我進入根目錄。比我試圖檢查公用文件夾的方式是否在路徑中。再次=>"?directory=/home/user/app/public/../../../../../" =>再次我在根。

如何測試並拒絕訪問?

+1

這聽起來像你試圖做的只是要求被剝削。 –

+0

這就是爲什麼我問,這是一個明顯的安全漏洞。 – Roman

+0

有沒有另外一種方法可以不需要像那樣通過目錄?你在做什麼? –

回答

0

試試這個:

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將解決路徑爲絕對路徑,以及做符號鏈接的分辨率。這將使您能夠精確地測試要操作的文件的路徑,並確保它位於給定路徑內。

相關問題