我有一個訪問文件目錄的擴展名。我使用ajax函數發送需要訪問控制器的路徑,並在控制器中使用$ _GET,因爲我沒有弄清楚如何使其工作。
$image_file_path = $_GET["url_region"];
$d = dir($image_file_path) or die("File not found!");
但是,當然當你要求其他類似../../ ..你可以訪問所有其他目錄。
你能建議我一種方法來消毒嗎?請!
我有一個訪問文件目錄的擴展名。我使用ajax函數發送需要訪問控制器的路徑,並在控制器中使用$ _GET,因爲我沒有弄清楚如何使其工作。
$image_file_path = $_GET["url_region"];
$d = dir($image_file_path) or die("File not found!");
但是,當然當你要求其他類似../../ ..你可以訪問所有其他目錄。
你能建議我一種方法來消毒嗎?請!
您可以輕鬆地使用正則表達式來捕獲參數的所有「../」值。另一種方式可能是,在數組中定義可用路徑或其他方法來檢查正確的訪問權限。
您應該考慮使用t3lib_div::_GET()
,不管php.ini magic_quotes說什麼,都可以忽略參數。
您可以對允許的路徑是什麼非常嚴格,並檢查用戶提供的值是否匹配,但始終容易出現一些錯誤驗證。簡單地檢查URL是否由您的擴展創建更容易。這是通過在URL中擁有一些無人能夠猜到的祕密密鑰完成的,並且您可以使用它來驗證所有參數是否真的來自您的擴展。這就是** cweiske **建議的'cHash'方法爲我的答案+1。 – tmt
@cascaval,謝謝你的解釋。我會研究這個選項:) – Probandot