我的PHP图像处理代码安全吗?

时间:2012-12-25 00:19:41

标签: php image security

我需要一些帮助来确定我的代码是否安全。 这是我根据网址重写调整图像大小的功能。

URL重写代码...里面(。*)有一个字符串,告诉产品的名称......我正在使用这种方法进行SEO目的,并且图像托管在不同的服务器上,因为我有多个网站,图像也将调整大小以使文件大小。

RewriteRule mypic/(.*)/demo.gif$ preview.php?p=$1

PHP代码。每个产品都有自己的文件夹,其中包含预览图片,该图片是为了SEO而构建的,源自名称。像

这样的东西
  

'www.mywebsite.com/products/eye-glasses-diesel/preview.gif'

这将是传递给PHP的数据:products/eye-glasses-diesel/

<?php
$src = 'http://www.mywebsite.com/'.$_GET['p'];
if (!$img = imagecreatefromgif($src."/preview.gif")){
    $img = imagecreatefromgif('http://www.mywebsite.com/na.gif');
}
// some image processing code like resizing,etc
// ......
header("Content-Type: image/gif"); 
imagegif($img); 
// Remove image 
imagedestroy($img);
?>

3 个答案:

答案 0 :(得分:0)

我认为两个基本检查是有序的。

首先,你应该对你的名字进行标准化,(这是我的谦虚命题),并且只允许说明字符下划线(没有数字和其他特殊字符),并在你的参数中检查该模式。因此,您将受到“../ ..”攻击的保护。

其次你的问题有点不清楚,我可能有循环的可能吗?那是你的服务器会不断尝试获取一个图像,而不是获得一个图像,他会被引导到你呈现的代码然后再次? (它可以帮你的服务器。)

答案 1 :(得分:0)

我认为这是安全的,但您可以提高性能。 最好多拍一些磁盘空间,并保存每次切换时的图像大小。

您可以在第一次请求图像时保存,之后只显示保存的文件。这是一个例子:http://pastebin.com/2kzga4Zs

答案 2 :(得分:-4)

是的,它非常好,因为它不是一个巨大的功能。在我看来,你应该添加一个检查来检查处理文件是否是图像

if( $_FILES["image"]["type"]

因此,不能通过Get添加恶意文件。