Безопасное обслуживание загруженных изображений в Django? - PullRequest
1 голос
/ 24 марта 2010

Мой сайт Django позволяет пользователям загружать изображения. Это работает на Apache.

Файлы загружаются через форму FileUpload. Папка, в которую загружаются файлы, находится вне проекта Django и защищена , как описано здесь , то есть папка имеет 755 разрешений, а файлы имеют 644 разрешения.

Теперь я хочу предоставить изображения пользователям, но мне нужно сделать это безопасно, чтобы не выполнялись исполняемые сценарии и чтобы пользователи не могли, например, удалить все изображения в каталоге.

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

Я предоставляю другой статический носитель (/ media / css) на сайте как отдельное статическое приложение.

Спасибо!

1 Ответ

0 голосов
/ 09 ноября 2011

Способ сделать это - настроить ваш веб-сервер так, чтобы он обслуживал файлы с ожидаемыми именами и с правильным типом содержимого изображения. Используйте ImageField от Django для некоторого уровня проверки PIL / Pillow, что загруженные файлы являются изображениями. Для этого каталога отключите такие функции веб-сервера, как автоматическое создание индексов каталога, автоматическое сохранение всего из файловой системы, поиск по типу mime и запуск сценариев cgi.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...