@sitnik_ru вот так:
```
const p = document.createElement('p');
p.innerText = `Text with "onerror='alert(123)'"`;
document.body.appendChild(p);
```
Точно так как генерируем обычные страницы сайтов
Top-level
@sitnik_ru вот так: ``` Точно так как генерируем обычные страницы сайтов 4 comments
@sitnik_ru ты правильно понял про то, что я предлагаю делегировать сборку HTML - HTML сериализатору. Если мы не доверяем HTML сериализатору (что нормально, но только если у проекта очень много денег), то мы рассматриваем как вектор угроз, возможность XSS от любого комментария на сайте по вине браузера. Я не знаю как можно защищаться в такой ситуации, но точно не санитайзингом HTML. Если мы учитываем что есть дыры аж в сериализаторе, то санитайзинг только добавит возможные комбинации атаки. @vitonsky как именно санитайзинг добавит векторы атаки? Какая была атака именно на санитайзер? @sitnik_ru добавит неожиданные изменения, которые сработают вместе с багом сериализатора. Если ты рассматриваешь возможность багов в сериализаторе, то такие баги могут быть и в санитайзере |
@vitonsky ну у тебя просто экранирование делает `innerText =`.
Против такого есть красивые атаки с javascript: на ссылках, где экранирование не спасёт. Плюс раз ты тут собираешь HTML, то тут можно делать DOM clobbering атаку.