【问题标题】:is my php image processing code secure?我的 php 图像处理代码安全吗?
【发布时间】:2012-12-25 00:19:41
【问题描述】:

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

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);
?>

【问题讨论】:

    标签: php image security


    【解决方案1】:

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

    首先你应该标准化你的名字,(这是我谦虚的建议)并允许只说字符和下划线(没有数字和其他特殊字符),并在你的 p 参数中检查该模式。因此,您将免受“../..”攻击。

    其次,您的问题有些不清楚,我认为可能存在循环?那就是您的服务器会不断尝试获取图像,而不是获取图像,而是将其定向到您提供的代码,然后再一次? (它可以拒绝你的服务器)。

    【讨论】:

    • 带有 na.gif 图像的代码是一张显示“不可用”的图片。这将始终找到,因此如果产品预览图像无法加载,它将显示。至于您的第一个建议,是的,我有这个想法,但是当我查看 preg_match 检查时,我完全一无所知。也许你能帮忙?
    • 不是找不到图片的问题,而是在尝试查找原始gif时会不断循环完成。对于普通的 exp,你可以去regexplanet.com 并在部署前对其进行测试。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-29
      • 2010-10-29
      • 1970-01-01
      • 2015-11-03
      • 1970-01-01
      • 2011-11-03
      相关资源
      最近更新 更多