Безопасное управление файлами с Symfony - PullRequest
1 голос
/ 18 ноября 2010

По умолчанию symfony загружает файл в папку web / upload, поэтому он доступен для всех. Мне нужно проверять учетные данные пользователя при каждом запросе к файлу. Как мне это сделать?

1 Ответ

5 голосов
/ 18 ноября 2010

Переместите свои загрузки за пределы своего рута, как в / data / uploads. В этом случае вам нужно поместить это в ваш файл ProjectConfiguration:

sfConfig::set('sf_upload_dir' => sfConfig::get("sf_data_dir") . DIRECTORY_SEPARATOR . 'uploads');

При условии, что вы всегда использовали sf_upload_dir для указания папки загрузки, все ваши файлы будут сохранены там.

Второй части решения требуется новое действие, которое получает имя файла, проверяет, есть ли у пользователя доступ к нему, и возвращает:

  • либо ошибка 403
  • или содержимое файла через readfile() после установки правильных заголовков Content-Type и Content-Lenght.
...