我需要允许网站用户提供远程“热链接”图片。
我意识到这有点危险,所以这是目前的程序:
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中的多个列中(转义数据)
我错过了什么吗?还有潜伏的危险吗?我想也许我应该在显示器端重新进行卷曲功能,以确保图像仍在那里并且它仍然是图像。
感谢您的任何建议。
答案 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库来读取用户提交的图像,并在系统上创建它的副本(作为图像),而不是远程链接。