TGViewer
Frontend | Вопросы собесов Frontend | Вопросы собесов @easy_javascript_ru · 17.7K subscribers
Post #2845 1.6K
🤔 Опасности использования `innerHTML` в JavaScript

innerHTML – это свойство, которое позволяет вставлять HTML-код внутрь элемента как строку. Однако оно небезопасно и может привести к серьезным проблемам.
document.getElementById("content").innerHTML = "<h1>Привет!</h1>";


🟠Уязвимость: XSS-атаки (внедрение вредоносного кода)
Если innerHTML получает данные от пользователя (например, из формы или URL), хакер может вставить вредоносный JavaScript-код.
const userInput = "<script>alert('Вас взломали!');</script>";
document.getElementById("content").innerHTML = userInput;


🟠Проблемы с безопасностью CSP (Content Security Policy)
Если в веб-приложении включена CSP (защита от XSS), то innerHTML может нарушать политику безопасности.
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">


🟠Случайное удаление обработчиков событий
Если заменить содержимое элемента через innerHTML, все обработчики событий внутри него удалятся.
document.getElementById("btn").addEventListener("click", () => {
alert("Нажато!");
});

document.getElementById("container").innerHTML = "<button id='btn'>Клик</button>";
document.getElementById("btn").click(); // Ошибка, обработчик удален


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 2
More from @easy_javascript_ru
  1. Sep 29, 2026Post #2999
  2. Sep 29, 2026🤔 Зачем создавать самовызывающуюся функцию, если есть создание контекста через фигурные с…
  3. Sep 29, 2026Post #2997
  4. Sep 29, 2026🤔 Расскажи про mobx MobX — это библиотека для управления состоянием в JavaScript-приложен…
  5. Sep 29, 2026Post #2995
  6. Sep 28, 2026🤔 Для чего необходим viewport? Viewport – это область видимой части веб-страницы в браузе…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →