php – 安全地处理远程“hotlinked”图像

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

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

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的多个列中(转义数据)

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

谢谢你的建议.

解决方法:

确保它不是驴色情片?

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

例如,CAPTCHAs输出图像,但可以通过调用< img src =“/ img / captcha.PHP”... />来同时(在幕后)在会话中存储“正确答案”. .

没有理由不能使用mod_rewrite用< img src =“/ img / captcha.jpg”... />来调用相同的PHP脚本.可以设置HTTP标头以将MIME类型报告为“image / jpg”,响应为200.

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

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...