Ответ
Использование 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 из ненадёжных источников