在webroot php readfile之外存储上传的图像非常慢

时间:2016-03-05 03:25:15

标签: php security file-upload readfile

我正在测试一种在webroot之外存储上传内容的新方法,出于安全原因,我已经在SO上的几个问题中看到过。

我运行正常,包括我的TimThumb文件,但我注意到这会大大增加页面加载时间。我在大多数页面上都有许多用户上传的图像,当通过webroot外部的readfile()获取图像时,加载时间是无法忍受的。

有什么我想念的吗?我想要安全,但我根本无法承受这么长的加载时间。

我的图像处理脚本如下所示:

$queryString = str_replace('.php&', '.php?', $_SERVER['QUERY_STRING']);

$src = preg_replace('#^src=#', '', $queryString);
$path = slash($_SERVER['DOCUMENT_ROOT'].'/../'.$src); // slash() removes duplicate slashes

if ( stristr($src, 'thumb.php') ) {
    // output the thumb file
    $query = explode('?', $path);
    $urlVars = explode('&', $query[1]);

    // storing TimThumb query vars as SESSION vars to pass them
    foreach($urlVars as $var) {
        $parts = explode('=', $var);
        $_SESSION['Thumb']['Thumb-'.ucwords($parts[0])] = $parts[1];
    }
    $path = str_replace('?'.$query[1], '', $path);
    echo include_php_file($path); // include_php_file just saves the buffered output from a file so you can use it as a var
    return;
} else {
    // output the image
    header('Content-Type: image/jpeg');
    echo readfile($path);
    return;
}

0 个答案:

没有答案