Какие знаешь опасности при работе с innerHTML

«Какие знаешь опасности при работе с innerHTML» — вопрос из категории Безопасность, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Использование innerHTML может привести к XSS-атакам, если вставляется недоверенный контент. Злоумышленник может внедрить вредоносный скрипт:

<div id="target"></div>
<script>
  document.getElementById('target').innerHTML = '<img src=x onerror="alert('XSS')">';
</script>

Другие проблемы:

  • Перезаписывает все дочерние элементы и события, что может вызвать утечки памяти
  • Медленнее, чем работа с DOM API (createElement, appendChild)
  • Ломает интерактивные элементы (<video>, <canvas>)

Безопасные альтернативы:

  • textContent для текста
  • document.createElement + append для элементов
  • DOMPurify.sanitize() если нужно обрабатывать HTML из ненадёжных источников