EMZETT.
Увійти

XSS (cross-site scripting)

Коротко: Атака, за якої чужий код JavaScript виконується на довіреному сайті в браузерах інших відвідувачів — зазвичай тому, що сторінка виводить ввід без перевірки як HTML.

Докладніше: Зловмисник впроваджує код через форму, коментар чи посилання. Якщо сторінка згодом показує його іншим користувачам, код виконується з їхніми правами: він може красти сеанси, запускати дії від імені жертви або підроблювати вміст. Розрізняють збережений XSS (код постійно лежить у базі даних), відбитий XSS (код у посиланні) та DOM-based XSS (помилка в браузерному скрипті).

Наш контекст: React за замовчуванням екранує текст. Небагато місць із dangerouslySetInnerHTML (новинні статті, метадані вікі, JSON-LD) виводять лише очищений вміст: HTML від адміністраторів очищується під час збереження за списками дозволів/заборон, JSON-LD проходить через захисну функцію. Попередній перегляд у редакторі перебуває в iframe із sandbox, де скрипти не виконуються.

Подробиці

Заходи захисту

  1. Екранувати вивід: ніколи не виводити ввід користувача як HTML (фреймворки роблять це).
  2. Використовувати CSP.

Див. також: CSP, SQL-ін’єкція, cookie