16 18
admin@art-web.ru
8 800 302-69-27 бесплатный звонок по России
+7 (903) 403-59-27 пн.-пт. с 09.00 до 18.00
Полезные статьи:
SVG и безопасность сайта: чем опасны векторные картинки
Эдуард
Автор: Эдуард
(frontend-разработчик)

SVG как оружие: почему безобидная картинка может взломать сайт

Коротко. SVG - это не набор пикселей, а текстовый XML-документ, и внутри него может оказаться активный код. В 2025 году доля SVG во вложениях фишинговых писем выросла с 0,1% до 4,9%, в марте доходила до 15% (Hoxhunt). В статье разбираем, как SVG используют для XSS, фишинга и атак на серверные парсеры, и какие 6 мер закрывают этот риск на сайте.

Содержание статьи:


Когда речь заходит о безопасности сайта, обычно вспоминают пароли, SQL-инъекции и DDoS. Про обычные картинки в формате SVG думают реже, хотя этот формат дизайнеры и верстальщики используют каждый день для иконок и логотипов. При неправильной обработке он становится каналом для XSS, фишинга и кражи данных.

Чем SVG отличается от JPG и PNG

JPG и PNG - это сетка пикселей с цветовыми значениями. Кроме цвета, браузеру из такого файла прочитать нечего.

SVG устроен иначе. Это текстовый XML-документ, который описывает графику через фигуры, линии и текст, а браузер интерпретирует эту разметку при каждом показе. Логотип в SVG - это, по сути, несколько строк кода: прямоугольник такого-то размера, круг такого-то цвета, надпись таким-то шрифтом.

SVG-файл как текст

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

JPG / PNG SVG
Что внутри пиксели текстовая XML-разметка
Может содержать скрипты нет да
Может содержать HTML и формы нет да, через <foreignObject>
Обрабатывается XML-парсером на сервере нет да, при конвертации и генерации превью

Как SVG превращается в атаку

Встроенный JavaScript

Стандарт SVG поддерживает собственный тег <script> и обработчики событий вроде onload. Выполнится ли код, зависит от способа подключения файла:

  • через <img> или CSS background-image - современные браузеры скрипты внутри SVG не выполняют;
  • при открытии файла напрямую по ссылке, через <object>, <embed>, <iframe> или inline-вставке в HTML - выполняют.

Главный риск - SVG, загруженный пользователем на ваш же домен: аватар, логотип компании в личном кабинете, вложение в форме. Если такой файл открыть по прямой ссылке, скрипт выполнится в контексте вашего сайта. Это хранимая XSS: код может отправлять запросы от имени пользователя, читать данные страницы и cookie без флага HttpOnly.

HTML и формы через <foreignObject>

Тег <foreignObject> позволяет встроить в SVG произвольный HTML, в том числе форму ввода логина и пароля. Пользователь думает, что открыл документ, и вводит данные, а они уходят злоумышленнику.

Автоматические редиректы

Скрипт в SVG может сработать сразу при открытии файла и перенаправить браузер на фишинговую страницу или загрузчик вредоносного ПО. Сам SVG при этом может быть пустым - пользователь не видит ничего подозрительного.

Атаки на XML-парсер на сервере: XXE

SVG - полноценный XML и поддерживает DOCTYPE с объявлением сущностей. Если сайт обрабатывает загруженные SVG на сервере (генерирует превью, конвертирует в PNG или PDF) уязвимой библиотекой, злоумышленник может заставить сервер прочитать локальный файл или обратиться к внутреннему ресурсу. Это атака XXE (XML External Entity).

XSLT-преобразования

SVG может ссылаться на XSL-таблицу стилей, которая превращает документ в HTML со своим кодом при открытии файла напрямую. Этот вектор сужается: Chrome отключает XSLT начиная с версии 158 (17 ноября 2026), о планах удалить его сообщили также Firefox и WebKit. До обновления браузеров у пользователей вектор остается рабочим.

Обход фильтров через нестандартную разметку

Отдельный SVG-файл браузер разбирает как строгий XML. Но SVG, вставленный inline в HTML-страницу, разбирается HTML-парсером, который прощает пропущенные кавычки и незакрытые теги. Поэтому фильтры на регулярных выражениях для «отлова» опасных конструкций ненадежны: одну и ту же конструкцию можно записать десятками способов. Чистить SVG нужно парсером и белым списком разрешенных элементов, а не поиском по строке.

Реальные атаки через SVG

Когда Что произошло Источник
Декабрь 2022 Фишинг с вредоносом Qakbot: HTML-вложение со встроенным SVG, скрипт которого собирал ZIP-архив прямо на компьютере жертвы. Файл не передавался по сети, поэтому почтовые фильтры его не видели Cisco Talos
Январь 2023 Атака «Blank Image»: письмо от имени DocuSign, во вложении HTML с пустой SVG-картинкой в base64, скрипт внутри перенаправлял на фишинговый сайт Avanan (Check Point)
Ноябрь 2024 SVG-вложения, которые показывали имитацию таблицы Excel со встроенной формой входа BleepingComputer
2024-2025 Доля SVG среди вредоносных вложений в письмах: 0,1% в 2024 году, 4,9% в первом полугодии 2025, пик около 15% в марте 2025 Hoxhunt, отчеты 3 млн пользователей

SVG удобен атакующим, потому что многие почтовые шлюзы по умолчанию считают его картинкой и не разбирают содержимое так тщательно, как исполняемые файлы или офисные документы с макросами.

Когда это касается вашего сайта

Риск реальный, если на сайте есть хотя бы одно из этого:

  • пользователи загружают аватары, логотипы или вложения, и среди разрешенных форматов есть SVG;
  • сайт принимает файлы через формы обратной связи, личный кабинет или медиатеку CMS;
  • SVG-иконки вставляются в шаблон inline, а их источник - не только ваши разработчики (например, их может загрузить контент-менеджер);
  • на сайте стоит плагин, который включает загрузку SVG. WordPress по умолчанию запрещает загружать SVG именно из-за этих рисков, и плагины вроде «разрешить SVG» снимают это ограничение.

Если SVG на сайте только ваши собственные иконки из верстки, а загрузки SVG от пользователей нет, риск минимальный.

Проверим, как ваш сайт обрабатывает файлы

Посмотрим, какие форматы принимают формы и CMS, как отдаются загруженные файлы, настроены ли заголовки безопасности. Найденные уязвимости закроем в рамках технической поддержки.

Как защитить сайт от SVG-атак

  1. Не принимать SVG, если он не нужен. Для аватаров и фото в формах достаточно JPG, PNG и WebP. Самая надежная защита - убрать SVG из списка разрешенных форматов.
  2. Санитизация на сервере. Если SVG нужен, каждый загруженный файл очищается по белому списку: удаляются <script>, обработчики on*, <foreignObject>, внешние ссылки и DOCTYPE. Для PHP есть библиотека enshrined/svg-sanitize (на ней работает плагин Safe SVG для WordPress), для JavaScript - DOMPurify, которая работает и в браузере, и на сервере в Node.js.
  3. Правильные заголовки при отдаче файлов. Пользовательские SVG отдаются с Content-Security-Policy: script-src 'none', X-Content-Type-Options: nosniff и, если файл не нужно показывать в браузере, Content-Disposition: attachment. В теге <img> такая картинка продолжит отображаться, а при прямом открытии код не выполнится.
  4. Строгий Content-Security-Policy на сайте. Запрет inline-скриптов и загрузки ресурсов с посторонних доменов снижает ущерб, даже если инъекция прошла.
  5. Отдельный домен для пользовательских файлов. Загрузки хранятся и отдаются с отдельного домена (не поддомена основного сайта) без доступа к cookie. Даже если скрипт выполнится, он не получит доступа к сессии пользователя на основном сайте.
  6. Конвертация в растр и безопасный парсер. Если векторность не нужна, SVG конвертируется в PNG на сервере и весь код отбрасывается. Библиотека, которая это делает, должна быть обновлена и настроена без загрузки внешних сущностей - это защита от XXE.


Для большинства сайтов малого бизнеса хватает первого пункта плюс заголовков из третьего. Санитизация и отдельный домен нужны там, где SVG от пользователей - часть продукта: конструкторы, маркетплейсы, сервисы с загрузкой логотипов.

SVG - хороший формат для верстки, отказываться от него не нужно. Но относиться к нему стоит как к любому пользовательскому вводу, а не как к «просто картинке».

Вопросы и ответы

Опасен ли SVG, если он подключен через тег img?

Нет, в этом режиме современные браузеры не выполняют скрипты внутри SVG и не загружают внешние ресурсы. Риск появляется, когда файл открывают напрямую по ссылке, вставляют inline или через object, embed, iframe.

Можно ли безопасно использовать SVG-иконки в верстке?

Почему WordPress не дает загружать SVG?

Что делать, если пришло письмо с SVG-вложением?

Защищает ли антивирус от вредоносных SVG?

Как проверить, уязвим ли мой сайт?

Разработка сайтов
Визитка от 20 000 р.
Каталог от 35 000 р.
Магазин от 30 000 р.
Лендинг от 15 000 р.
Дизайн
Логотип от 5 000 р.
Персонаж от 40 000 р.
Продвижение
SEO от 5 000 р.
Контекст от 5 000 р.
Продвижение сайтов Контекстная реклама

Нейросети за минуты собирают дизайны, палитры и черновые макеты - и кажется, что дизайнер больше не нужен. Разбираем по этапам разработки сайта, что можно отдать нейросети, а что нельзя.

Микроразметка Schema.org - стандартный способ сообщить машинам, что «ул. Примерная, д. 1» - это адрес организации, а «12 990» - цена товара в рублях. Ее часто называют главным инструментом GEO (продвижения в нейросетях).

Компания «Art-Web» предлагает услуги по подключению HTTPS-протоколов для их сайтов в Симферополе. Эта услуга относится к наиболее востребованным, поскольку обеспечивает надежную защиту передаваемых данных от перехвата и гарантирует подлинность соединений именно с нужными клиенту сайтами (протоколы НТТР этого не обеспечивали).

Как бороться с недобросовестной конкуренцией, когда соседи необоснованно снижают цены? Как повышать свои цены, увеличивая при этом продажи?

Преимущества создания сайта в Москве с art-web.ru:

Сотрудники art-web.ru

Персональный менеджер

Сотрудничая с нашей веб-студией, вы получаете личного менеджера, который берет ваш проект под постоянный контроль. Он курирует все этапы разработки — от идеи до запуска, следит за качеством, анализирует результаты и предлагает лучшие решения для роста. Вам не нужно вникать в технические нюансы — менеджер всегда на связи и поможет даже с мелкими правками.

Экономия времени

Мы знаем, что ваше время ценно. Веб-студия Art-Web берет на себя все задачи по созданию и развитию сайта, чтобы вы могли сконцентрироваться на бизнесе. Наша цель — не просто выполнить работу быстро, а привести вас к результату, который принесет прибыль. Ваш успех напрямую означает наш успех.

Работа на результат

Мы не продаем красивые макеты — мы создаем работающие инструменты для вашего бизнеса. Наша команда специалистов нацелена на то, чтобы вы ощущали реальную отдачу: рост клиентов, повышение продаж, укрепление имиджа. В каждом проекте мы видим цель — и доводим её до результата.

Постоянный рост эффективности

Ваш сайт должен расти и развиваться вместе с вашим бизнесом. Мы делаем ресурсы удобными, современными и конкурентоспособными, чтобы они приносили максимум выгоды — будь то продажи или репутация. Мы никогда не останавливаемся: внедряем новые технологии, тестируем подходы, совершенствуем решения. Именно поэтому сайты Art-Web всегда эффективны и выделяются на рынке.

ТОП 100 веб-студий России
Москва Студия дизайна Art-web
ул. Александра Невского д. 30 295000 Москва +7 978 260-17-07
Студия дизайна Art-web
Оценка 0.0 из 5
020262008
18 лет работаем для вас
0
более 1000 реализованных проектов
0
10 сотрудников
0
более 100 проектов на поддержке
0 350 и более активных доменов
0 рублей клиентов реализовали на рекламу за 2016-2026
0 фраз продвигается в поиске
Режим работы веб студии:
ПН. - ПТ. 09:00 - 18:00
СБ. - ВС. выходной
8 800 302-69-27
admin@art-web.ru


Сертифицированное агентство Яндекса логотип от студии art-web
Заказать консультацию
Отправить
Рейтинг Рунета 2023 г.
разработка сайтов
в регионе
Рейтинг Рунета 2022 г.
поддержка и развитие
сайта на Joomla
Рейтинг Рунета 2022 г.
разработка и продвижение
сайта на Joomla
 
Добро пожаловать!

На нашем интернет-сайте предусмотрена обработка метаданных пользователей (файлов cookie, данных об IP-адресе и местоположении).

Используя web-ресурс art-web.ru, Вы выражаете своё согласие с этим условием.