使用PHP getimagesize函数的任何危险



我有一个禁用allow_url_fopen的主机,因为他们说这是一个安全风险,这反过来又阻止了我使用getimagesize函数,因为我正在传递http。

我的网站在Wordpress上,我正在使用getimagesize在一个Wordpress网站的上传文件夹中拉入一张图片,该文件夹显然包含http://。

所以我的问题是,这是否不安全?如果它不安全,如何在Wordpress环境中做到这一点?

谢谢。

您的主机可能想到的安全风险是人们试图从远程主机include()脚本的地方。当你为HTTP启用fopen包装器时,它通常会被启用。(当然,这种行为可以被禁用,但大多数主机并不介意,只是出于谨慎而阻止这些请求。其他问题也存在。)

getimagesize()的安全性而言,如何获得源映像并不重要。cURL或fopen包装。。。没有什么区别。在任意内容上使用getimagesize()通常是安全的,但请注意,过去已经发现了各种图像库中的漏洞。

好的,解决方案是使用CURL。所以像这样的东西会起作用。

$filename = "http://www.example.com/example.jpg";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $filename);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);
$new_image = ImageCreateFromString($contents);
imagejpeg($new_image, "temp.jpg",100);
$size = getimagesize("temp.jpg");
// width and height
$width = $size[0];
$height = $size[1];

最新更新