Sobes.tech
Senior

Ce probleme de securitate sunt asociate cu utilizarea innerHTML pentru inserarea inputului utilizatorului?

sobes.tech AI

Răspuns de la 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 без фильтрации открывает дверь для выполнения вредоносного кода, что может привести к краже данных, сессий и другим атакам.