File upload Symfony2文件上传的安全性:安全存储在哪里?

File upload Symfony2文件上传的安全性:安全存储在哪里?,file-upload,symfony,security,File Upload,Symfony,Security,我使用Ajax应用程序在Symfony2web应用程序中上传文件。 当我上传文件时,我将它们放在如下路径中: "%kernel.root_dir%/../web/bundles/acmehome/images/uploaded" 我在管理这些文件方面遇到了很多麻烦 web目录中的所有文件是否可见/可搜索/可浏览? 如果是,我应该使用哪个路径进行存储,以使它们仅对注册用户可见 我提出这个问题是因为用户Rook建议不要将文件存储在web根目录中。是的,在默认配置中,所有文件都是可见/可搜索/可浏览

我使用Ajax应用程序在Symfony2web应用程序中上传文件。 当我上传文件时,我将它们放在如下路径中:

"%kernel.root_dir%/../web/bundles/acmehome/images/uploaded"
我在管理这些文件方面遇到了很多麻烦

web目录中的所有文件是否可见/可搜索/可浏览? 如果是,我应该使用哪个路径进行存储,以使它们仅对注册用户可见


我提出这个问题是因为用户Rook建议不要将文件存储在web根目录中。

是的,在默认配置中,所有文件都是可见/可搜索/可浏览的。您可以通过目录中的.htaccess文件限制访问

我认为这是一种将上传的文件移动到非web根文件夹中的好方法


这个话题让我很感兴趣。

我所做的就是为每次上传创建一个数据库条目

1-我将文件上传到像web/upload/[month]/[day]这样的文件夹中(我使用.htaccess保护上传文件夹)

2-(我创建了一个称为上传的条令实体)在上传过程中,我使用 名称 描述 文件路径, 文件扩展名, 所有者类型(我上载文件的实体), 所有者id(实体id)

3-最后,如果我在“博客实体”(vendor\entity\blog)或评论实体(vendor\entity\comment)上上载了我的文件,我将请求属于我的所有文件

$em = $this->getDoctrine()->getEntityManager();
        $documents = $em->getRepository('VendorBundle:Upload')->findBy(array(
        'ownerType' =>$entityName,
        'ownerId'   =>$id
    ));
这种方法非常灵活,允许您创建一个上传模块,可以用于各种实体。
此外,由于上传被编入索引,通过搜索引擎进行搜索的效率更高(因为你可以添加元数据,如描述、名称等)

上传的文件应该移动到哪里?好吧,我的问题更多的是“文件存储在哪里”,而不是“使用哪种模型存储它们”。关于定义子目录,我不知道是否有这样的优势。阅读。上传文件的真正问题是向用户显示它在服务器上的存储位置,因为如果它是脚本,他们必须从url调用它来执行它。但是我不会把它放在web/捆绑包中,因为它通常是我们存储东西的地方(根据文档)。我更喜欢web/upload/random()为什么要定义一个随机名称?我可以为文件设置一个随机名称。。。此外,如果我想拒绝对目录的访问,我认为.htaccess应该可以工作。我知道!但我们是一家从事数据检索的公司。如果文件名有前缀模式,则很容易按名称获取文件