我有一個php腳本,它通過$_GET
獲取相對路徑名,讀取該文件並創建它的縮略圖。我不希望用戶能夠從服務器讀取任何文件。只有來自某個目錄的文件應該被允許,否則劇本應該exit()
。
這裏是我的文件夾結構:
files/ <-- all files from this folder are public
my_stuff/ <-- this is the folder of my script that reads the files
我的腳本通過mydomain.com/my_stuff/script.php?pathname=files/some.jpg
訪問。什麼不應該被允許e。摹:mydomain.com/my_stuff/script.php?pathname=files/../db_login.php
所以,這裏是腳本的文件夾my_stuff
相關部分:
...
$pathname = $_GET['pathname'];
$pathname = realpath('../' . $_GET['pathname']);
if(strpos($pathname, '/files/') === false) exit('Error');
...
我真的不知道有關的做法,似乎並不對我來說是安全的。任何人有更好的主意?
任何想法如何以編程方式設置$ basedir和$允許腳本在具有不同路徑的不同服務器之間移植? – Max 2010-06-08 13:26:42
@Max啊歡迎來到我的回答:) – 2010-06-08 13:27:21