我正在設計一個網站,其中各種外部鏈接都顯示在我的頁面上。我使用網址或內容作爲頁面標題中的變量
$url=$_GET['url'];
$website_data = file_get_contents($url);
echo $website_data;
所以基本上用戶會點擊一個超鏈接是像www.test.com/display_page.php?url=http://www.xyz.com/article/2.jpg
我的頁面,list_of_images.php,通常具有HREF圖像的每個圖像的列表如上在頁面,當任何圖像被點擊時,它會去display_page.php,這將顯示我們的橫幅在這個頁面的頂部,一些文字,然後這個圖像下面。此圖片可能來自任何網站。
我目前直接發送url並用GET抓取它。我明白,用戶/黑客實際上可以做一些編碼,併爲url變量發送命令,並可能破壞服務器或做一些有害的事情,所以我想避免這種方法或直接在標題中發送URL。這個問題的替代方法是什麼?
感謝您的回覆。我無法使用數據庫或數組,因爲圖像和網址每分鐘都會動態變化。 – 2010-12-21 05:54:37
即使它們每秒都在變化,我也不明白爲什麼你不能使用數據庫。 – 2010-12-21 05:56:16
@Scorpion King:唯一的方法是隻允許相對URL,並且非常小心地清理它們以免'/'出現。確保它匹配這樣的東西:'/^[a-z0-9 -_] + \。(jpg | jpeg)$/i'。 – Jonah 2010-12-21 06:00:23