Для обычного текста используйте textContent, а не innerHTML. Если форматированный HTML действительно нужен, применяйте проверенный sanitizer с ограниченным набором тегов и атрибутов.
Как обезопасить метод html от вставки пользовательского кода?
Для обычного текста используйте textContent, а не innerHTML. Если форматированный HTML действительно нужен, применяйте проверенный sanitizer с ограниченным набором тегов и атрибутов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Мини-библиотека реализует html(value){ element.innerHTML=value; }. Value приходит из комментария пользователя. Нужна безопасная передача обычного текста; небольшой набор форматирования может появиться позднее. Какие изменения нужны?
Ответ
Для обычного текста используйте textContent, а не innerHTML. Если форматированный HTML действительно нужен, применяйте проверенный sanitizer с ограниченным набором тегов и атрибутов.
Не пытайтесь удалить только script регулярным выражением: опасное поведение может быть в атрибутах, URL и других конструкциях. Лучше разделить методы text для любых строк и явно ограниченный html для подготовленного содержимого. Trusted Types и CSP дают дополнительные барьеры, но не оправдывают передачу произвольного пользовательского HTML в опасный sink. Исходный текст сохраняют как данные, не как готовый исполняемый шаблон.