提高imageUpload的安全性,img src =“image.php”的问题

时间:2013-05-01 22:51:33

标签: php

似乎无法让PHP脚本执行并获取图像脚本,图像placeholder.jpg在public_html webroot之外存储,这是我的工作

显示图片.php文件

<img src="image.php?image=<?php echo urlencode('placeholder.jpg') ?>"/>

image.php

<?php

    $file = basename(urldecode($_GET['image']));
    $fileDir = '/noaccess/avatars/';

    if (file_exists($fileDir . $file))
    {
        $contents = file_get_contents($fileDir . $file);

        header('Content-type: image/jpg');

        echo $contents;
    }

?>

1 个答案:

答案 0 :(得分:2)

运行这种脚本非常安全,因为你让黑客访问你的文件系统,记住他们可以使用../来浏览文件夹, 但无论如何试试这个:

<?php

    $file = basename(urldecode($_GET['image']));
    $fileDir = $_SERVER['DOCUMENT_ROOT'] . 'noaccess/avatars/';

    if (file_exists($fileDir . $file))
    {
        $imageRes = imagecreatefromjpeg($fileDir . $file);
        header('Content-Type: image/jpeg');
        // Output the image
        @imagepng($imageRes);
        // Free up memory
        @imagedestroy($imageRes);
        die();
    }

?>