Выбор ответа Senior Безопасность веб-приложения обновлено

Загрузка аватара в SVG

Вопрос

Пользователи загружают аватары, файлы отдаются с основного домена с исходным Content-Type. Почему SVG опасен?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: SVG может содержать JavaScript, на вашем домене это хранимый XSS. SVG это XML, в который можно встроить <script и обработчики событий.

Варианты ответа

  1. SVG слишком большой по размеру и съедает место в хранилище
  2. SVG не открывается в старых браузерах и ломает вёрстку страницы профиля
  3. SVG нельзя сжать, и Pillow падает при попытке сделать превью
  4. SVG может содержать JavaScript, на вашем домене это хранимый XSSправильный ответ

Разбор

SVG это XML, в который можно встроить <script> и обработчики событий. Открытый напрямую с вашего домена, он выполнится в контексте сайта и получит доступ к cookie без HttpOnly и к API от имени пользователя. Защита: принимать только растровые форматы и перекодировать их, проверять тип по содержимому, отдавать пользовательские файлы с отдельного домена (без cookie основного), Content-Disposition: attachment, X-Content-Type-Options: nosniff и CSP.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме