Sobes.tech
Senior

Quali problemi di sicurezza sono associati all'uso di innerHTML per inserire input utente?

sobes.tech AI

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