有使用PHP getimagesize功能的危险吗?

时间:2012-07-14 02:18:57

标签: php

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

我的网站在Wordpress上,我使用getimagesize在Wordpress网站的uploads文件夹中提取图像,该网站显然包含http://。

所以我的问题是,如果这不安全吗?如果它不安全,如何在Wordpress环境中完成?

感谢。

2 个答案:

答案 0 :(得分:0)

您的主机可能会考虑的安全风险是人们尝试include()来自远程主机的脚本。为HTTP启用fopen包装器时,通常会启用此功能。 (这种行为当然可以被禁用,但大多数主机都不会打扰,并且只是非常谨慎地阻止这些请求。还存在其他问题。)

getimagesize()的安全性而言,获取源图像并不重要。 cURL或fopen包装......没有任何区别。在任意内容上使用getimagesize()几乎是安全的,但要注意过去在各种图像库中发现的漏洞。

答案 1 :(得分:-1)

好的解决方案是使用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];