#django #security #nginx
#django #Безопасность #nginx
Вопрос:
Я нашел следующее уведомление о безопасности на веб-сайте Django:
Обработка загрузки мультимедиа в Django создает некоторые уязвимости, когда этот носитель обслуживается способами, которые не соответствуют рекомендациям по безопасности. В частности, HTML-файл может быть загружен в виде изображения, если этот файл содержит допустимый заголовок PNG, за которым следует вредоносный HTML. Этот файл пройдет проверку библиотеки, которую Django использует для обработки изображений ImageField (Pillow). Когда этот файл впоследствии отображается пользователю, он может отображаться как HTML в зависимости от типа и конфигурации вашего веб-сервера.
К сожалению, нет дополнительной информации о том, как защитить веб-сайт от этого вредоносного PNG, поэтому у меня есть несколько вопросов:
- Как я должен настроить свой веб-сервер (nginx)?
- Как я могу сгенерировать html в формате PNG, чтобы загрузить его на сервер и убедиться, что он не будет отображаться как html?
- Должен ли я добавить дополнительную проверку изображения при загрузке и какое лучшее решение / библиотека (вероятно, libmagick) для этого?
Ответ №1:
Согласно документам Django:
На уровне платформы не существует пуленепробиваемого технического решения для безопасной проверки всего содержимого загруженных пользователем файлов, однако есть некоторые другие шаги, которые вы можете предпринять для смягчения этих атак:
Один класс атак можно предотвратить, всегда обслуживая загруженный пользователем контент из отдельного домена верхнего уровня или второго уровня. Это предотвращает любой эксплойт, заблокированный политикой защиты одного и того же источника, такой как межсайтовый скриптинг. Например, если ваш сайт работает на example.com вы хотели бы обслуживать загруженный контент (параметр MEDIA_URL) из чего-то вроде usercontent-example.com . Недостаточно обслуживать контент из поддомена, такого как usercontent.example.com .
Помимо этого, приложения могут выбрать определение белого списка допустимых расширений файлов для загруженных пользователем файлов и настроить веб-сервер для обслуживания только таких файлов.
Также кажется, что использование CDN может помочь в решении некоторых типов проблем.
Комментарии:
1. Да, я видел это, просто хочу проверить, что я правильно обслуживаю файлы.