存储上传文件的最安全方式

时间:2012-06-11 06:48:43

标签: symfony

我将上传的文件存储在网络目录中:

//src/Acme/CocoBundle/Entity/CocoFromTheNorth.php
/**
 * @ORM\Column(type="string", length=255, nullable=true)
 */
public $path;

protected function getUploadRootDir()
{
    return __DIR__.'/../../../../web/'.$this->getUploadDir();
}

protected function getUploadDir()
{

    return 'uploads/documents';
}

这是一个好习惯吗?将上传的文件保留在Web目录之外是不是更好,这样用户就无法直接访问它们了?

我认为最好的方法是将上传的文件存储在Web根目录之外吗?那么它最好的地方在哪里? 或者我如何配置Web服务器以拒绝访问上传目录?

1 个答案:

答案 0 :(得分:8)

首选将上传的文件保留在Web目录之外,并在使用PHP建立访问权限后使用X-SendFile来提供这些文件。

我在这里概述了类似的内容:How to securely store files on a server

在这里:Caching HTTP responses when they are dynamically created by PHP