Выбор ответа Middle Код-ревью обновлено
Опасность в комментарии пользователя
Вопрос
Что здесь опаснее всего?
function Comment({ comment }: { comment: { html: string } }) {
return <div dangerouslySetInnerHTML={{ __html: comment.html }} />;
}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: XSS: пользовательский HTML вставляется без санитизации. dangerouslySetInnerHTML с данными пользователя позволяет внедрить, например, <img src=x onerror=... и выполнить скрипт от имени жертвы.
Варианты ответа
- Лишний
div, который ломает семантику разметки - Отсутствие
memo: компонент рендерится заметно чаще нужного - Отсутствие
aria-labelу блока с контентом - XSS: пользовательский HTML вставляется без санитизацииправильный ответ
Разбор
dangerouslySetInnerHTML с данными пользователя позволяет внедрить, например, <img src=x onerror=...> и выполнить скрипт от имени жертвы. Нужно рендерить текст обычным JSX или, если разметка нужна, санитизировать её (DOMPurify) и дополнительно настроить CSP. Остальные пункты в лучшем случае мелочи, а безопасность блокирует мерж.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.