Самый безопасный способ хранения загруженных файлов

Я храню загруженные файлы в веб-каталоге:

//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';
}

это хорошая практика? Не лучше ли сохранить загруженные файлы за пределами веб-каталога, чтобы они не могли быть напрямую доступны пользователям?

правильно ли я думаю, что лучшим способом будет хранить загруженные файлы за пределами корня вебсервера? Где же тогда будет лучше всего? Или как я могу настроить веб-сервер, чтобы запретить доступ к директории загрузок?

1 ответов


предпочтительно хранить загруженные файлы за пределами веб-каталога и использовать X-SendFile для обслуживания этих файлов после установки разрешений доступа с помощью PHP.

я обрисовал здесь нечто подобное:как безопасно хранить файлы на сервере

и здесь: кэширование HTTP-ответов, когда они динамически создаются PHP