2014-10-29 96 views
0

我想知道函數imagecreatefrompng(及其親屬)是否安全?imagecreatefrompng安全地獲取外部圖像?

如果我在哪裏使用此函數獲取外部圖像文件,並且圖像包含惡意代碼,這些代碼是否會在我的服務器上執行?

例子:

<?php 
if($_GET['pass'] != 'IamAW') die(); 

// Accepted Filetypes 
$Accepted = array('png'); 

$File = $_GET['file']; 

$Filetype = end(explode('.', $File)); 

if(!in_array($Filetype, $Accepted)) { 
die('Fil-type ikke valid'); 
} 

$im = imagecreatefrompng($File); 


header('Content-Type: image/'. $Filetype); 
imagepng($im); 

imagedestroy($im); 
?> 

回答

0

這是可行的,但爲什麼還要這麼做呢?

你正在吸取一個遠程PNG,解壓縮到內存中的原始格式,然後重新壓縮到PNG,而沒有做任何事情的圖像。你可能耗盡內存,如果它最終被一個「大」 PNG(如1280×1024的32位PNG將需要5兆字節RAM的

你會更好做。

echo file_get_contents($remote_image_url); 

您節省解壓縮/再壓縮時間。