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