Некоторые сайты (не будем показывать пальцем) запрещают пользователям использовать .svg-изображения в качестве аватарок. Этот запрет их авторы обосновывают возможностью организации XSS-атаки через встроенный в SVG джаваскрипт. Но вроде бы у них нет прав на оправдания. Распарсили бы, да вырезали. Или хотя бы уведомили пользователя о том, что он нарушает УК РФ, закон о преднамеренном злоумышленном использовании вычислительных средств:
159.6 УК РФ — Мошенничество в сфере компьютерной информации
272 УК РФ — Неправомерный доступ к компьютерной информации
272.1 УК РФ — Незаконные использование и (или) передача, сбор и (или) хранение компьютерной информации, содержащей персональные данные, а равно создание и (или) обеспечение функционирования информационных ресурсов, предназначенных для ее незаконных хранения и (или) распространения
273 УК РФ — Создание, использование и распространение вредоносных компьютерных программ

== Какая Java-библиотека вырезает JS из SVG? ==

ДипСик: «Для удаления JavaScript из SVG в Java существует специализированная библиотека: SVG Sanitizer от Borewit. Она делает именно то, что вам нужно: удаляет теги , обработчики событий (например, onclick) и другие опасные элементы, предотвращая XSS-атаки»
«Другие альтернативы: OWASP Java HTML Sanitizer: Хотя он в основном для HTML, эта библиотека также умеет обрабатывать SVG-контент, распознавая его как «foreign content». JSVG: Это больше рендерер. Его можно использовать, если вам не нужен сам SVG как код, а только его отображение, потому что он не поддерживает скрипты и интерактивность по умолчанию.»

== для Rust ==

svg-hush от Claudflare
dom_sanitizer

== Вообще ==

Алиса: «Для полноценной защиты от XSS при загрузке пользовательских SVG дополнительно используют:

отдачу файлов без возможности выполнения как HTML;  
  Не вставляй SVG инлайн в HTML.  
  SVG становится частью DOM страницы.  
  Скрипты из SVG имеют доступ к странице — это классическая XSS‑угроза.  
показ SVG через тег <img> (здесь тег = HTML element) вместо инлайн‑вставки  
  <img src="/uploads/avatar?id=123" />  
  Браузер загружает SVG как изображение, а не как документ.  
  В этом случае браузер вообще не выполнит скрипты из SVG  .
  Контекст изолируется: скрипты внутри SVG не выполняются, даже если они там есть.  
  Обработчики событий (onclick и т.д.) тоже не работают.  
Браузер специально так спроектирован, чтобы картинки не могли исполнять скрипты и влиять на страницу.  
с правильным Content-Type: „image/svg+xml”  
Content-Type: image/svg+xml  
  Опасно, когда SVG отдают как „text/html” или „application/xhtml+xml”  
Content-Disposition: inline; filename=«example1.svg»  
- Content-Disposition: attachment; filename=«example2.svg»  
  (браузер не будет исполнять скрипты из SVG при предпросмотре, а файл сохранится на диск)  
Content-Security-Policy (CSP), ограничивающий выполнение скриптов;  
  В Apache для установки заголовков есть mod_headers  
  Header set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:;"  
Это хорошо для статики, где JS не нужен вообще.  
хранение загруженных файлов так, чтобы их нельзя было открыть напрямую в браузере как документ  
  (например, через скачивание или проксирование).  

Иногда делают отдельный домен/поддомен только для пользовательского контента: usercontent.example.com

отключать выполнение скриптов (CSP);  
не давать доступ к кукам основного сайта;  
использовать SameSite;  
использовать X-Content-Type-Options: nosniff, чтобы браузер не пытался «угадать» тип контента;  
и прочие меры.  
»  

CVE-2017-8778 = нашли XSS через SVG в GitLab (q) Квен