安全地处理远程“热链接”图像

时间:2012-03-29 15:48:10

标签: php security image-processing

我需要允许网站用户提供远程“热链接”图片。

我意识到这有点危险,所以这是目前的程序:

1)解析使用PHP pathinfo提供的路径,并将路径分解为适当转义的部分(主机,文件名,扩展名)。

2)执行图像标题的curl请求,如下所述:How can one check to see if a remote file exists using PHP?并验证它是否具有有效的png或jpg mime类型和HTTP 200返回码。

3)验证文件名和扩展名(来自上面的pathinfo)是一个有效的png或jpg文件(我不接受GIF等)

4)最后,将图像路径数据存储在DB中的多个列中(转义数据)

我错过了什么吗?还有潜伏的危险吗?我想也许我应该在显示器端重新进行卷曲功能,以确保图像仍在那里并且它仍然是图像。

感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

确定它不是驴色情片?

......说真的,我唯一可以想到的是,如果它是一个脚本/ exe / bin,它将图像输出到屏幕上(想想PHP / GD),但在后台同时做其他事情时间。

例如,CAPTCHAs输出图像但可以存储&#34;正确答案&#34;在会话中同时(幕后)只需拨打<img src="/img/captcha.php" ... />

没有理由不能使用mod_rewrite与<img src="/img/captcha.jpg" ... />调用相同的PHP脚本。可以设置HTTP标头以将MIME类型报告为&#34; image / jpg&#34;回复为200。

我认为你几乎可以做所有事情;虽然您可以使用GD库来读取用户提交的图像,并在系统上创建它的副本(作为图像),而不是远程链接。