我有这个主机禁用了allow_url_fopen,因为他们说这是一个安全风险,这反过来又阻止了我使用getimagesize函数,因为我传入了一个http。
我的网站在 Wordpress 上,我正在使用 getimagesize 将图像拉入 Wordpress 网站的上传文件夹中,该文件夹显然包含 http://。
所以我的问题是这是否不安全?如果不安全,如何在 Wordpress 环境中完成?
谢谢。
我有这个主机禁用了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];