Назад к вопросам
Senior
2
Какие проблемы безопасности связаны с использованием innerHTML для вставки пользовательского ввода?
Компании, где спрашивали
Bitrix
Ответ от нейросети
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 без фильтрации открывает дверь для выполнения вредоносного кода, что может привести к краже данных, сессий и другим атакам.