Sobes.tech
Back to questions
Senior
1

Какие проблемы безопасности связаны с использованием innerHTML для вставки пользовательского ввода?

Companies where asked
Bitrix

Answer from AI

sobes.tech AI

Использование innerHTML для вставки пользовательского ввода несет серьезные риски безопасности, главным образом связанные с XSS-атаками (межсайтовым скриптингом). Если пользовательский ввод напрямую вставляется в DOM через innerHTML без должной очистки или экранирования, злоумышленник может внедрить вредоносный JavaScript-код.

Пример проблемы:

const userInput = '<img src=x onerror=alert("XSS")>';
document.getElementById('output').innerHTML = userInput;

В результате на странице выполнится alert, что демонстрирует XSS.

Чтобы избежать этого:

  • Никогда не вставляйте необработанный пользовательский ввод через innerHTML.
  • Используйте методы, которые вставляют текст, а не HTML, например, textContent.
  • Если нужно вставить HTML, применяйте библиотеки для безопасного санитайзинга (например, DOMPurify).

Таким образом, innerHTML без фильтрации открывает дверь для выполнения вредоносного кода, что может привести к краже данных, сессий и другим атакам.