Защита от вредоносного PNG в Джанго - PullRequest
0 голосов
/ 08 апреля 2019

Я обнаружил следующее уведомление о безопасности на веб-сайте Django:

Обработка загрузки мультимедиа в Django создает некоторые уязвимости, когда эти носители обслуживаются способами, не соответствующими рекомендациям по безопасности.В частности, файл HTML может быть загружен в виде изображения, если этот файл содержит действительный заголовок PNG, за которым следует вредоносный HTML.Этот файл пройдет проверку библиотеки, которую Django использует для обработки изображений ImageField (Pillow).Когда этот файл впоследствии отображается пользователю, он может отображаться в виде HTML в зависимости от типа и конфигурации вашего веб-сервера.

К сожалению, нет дополнительной информации о том, как защитить веб-сайт от вредоносного PNGпоэтому у меня есть несколько вопросов:

  1. Как мне настроить свой веб-сервер (nginx)?
  2. Как я могу сгенерировать HTML в формате PNG для загрузки на сервер и убедиться, что он не будет отображаться какhtml?
  3. Должен ли я добавить дополнительную проверку изображения при загрузке, и что является лучшим решением / библиотекой (вероятно, libmagick) для этого?

1 Ответ

1 голос
/ 08 апреля 2019

В соответствии с Django Docs :

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

  1. Один класс атак можно предотвратить, всегда обслуживая загруженный пользователем контент из отдельного домена верхнего уровня или домена второго уровня.Это предотвращает любые эксплойты, заблокированные защитой политики того же источника, такой как межсайтовый скриптингНапример, если ваш сайт работает на example.com, вы захотите обслуживать загруженный контент (параметр MEDIA_URL) с чего-то вроде usercontent-example.com.Недостаточно обслуживать контент с субдомена, такого как usercontent.example.com.

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

Также кажется, что использование CDN может помочь в решении некоторых типов проблем.

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