Как обезопасить метод html от вставки пользовательского кода?

Для обычного текста используйте textContent, а не innerHTML. Если форматированный HTML действительно нужен, применяйте проверенный sanitizer с ограниченным набором тегов и атрибутов.

Короткий ответ

Что ответить на собеседовании

Для обычного текста используйте textContent, а не innerHTML. Если форматированный HTML действительно нужен, применяйте проверенный sanitizer с ограниченным набором тегов и атрибутов.

Подробный разбор

Ответ с пояснениями

Условие

Мини-библиотека реализует html(value){ element.innerHTML=value; }. Value приходит из комментария пользователя. Нужна безопасная передача обычного текста; небольшой набор форматирования может появиться позднее. Какие изменения нужны?

Ответ

Для обычного текста используйте textContent, а не innerHTML. Если форматированный HTML действительно нужен, применяйте проверенный sanitizer с ограниченным набором тегов и атрибутов.

Не пытайтесь удалить только script регулярным выражением: опасное поведение может быть в атрибутах, URL и других конструкциях. Лучше разделить методы text для любых строк и явно ограниченный html для подготовленного содержимого. Trusted Types и CSP дают дополнительные барьеры, но не оправдывают передачу произвольного пользовательского HTML в опасный sink. Исходный текст сохраняют как данные, не как готовый исполняемый шаблон.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее