我正在设计一个网站,其中各种外部链接都显示在我的页面上。我使用网址或内容作为页面标题中的变量
$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