Практическое руководство FindRisk

Безопасность JavaScript: прототипы, DOM, postMessage и утечки URL

Безопасность браузерного кода начинается с границ доверия. HTML, объект конфигурации и сообщение другого окна могут влиять на приложение даже без явного script. Свяжите источник данных с местом использования, а не ограничивайтесь поиском опасных строк.

Что сделать

  1. 1Перечислите источники данных: HTML, URL, JSON, внешние окна и сторонние скрипты.
  2. 2Проверьте deep merge, вложенные присваивания и чтение унаследованных свойств.
  3. 3Уберите зависимость настроек от именованных свойств window и document.
  4. 4Для postMessage проверьте точные origin, source и схему допустимых действий.
  5. 5Проверьте реальные запросы на утечки URL и исключите секреты из аналитики.
  6. 6Добавьте тестовые фикстуры и проверьте санитайзер и CSP как дополнительные слои защиты.

Материалы по теме

DOM Clobbering: как HTML подменяет значения JavaScript

Почему элементы с id и name могут влиять на именованные DOM-свойства и как избежать небезопасного чтения конфигурации из window и document.

СреднийВеб-рискНужна ручная проверкаВеб-приложения

Утечка через Referer: токены в URL и Referrer-Policy

Как приватные адреса и токены попадают в Referer, историю и журналы и почему одной Referrer-Policy недостаточно для защиты секретов в URL.

СреднийВеб-рискНужна ручная проверкаВеб-приложения

DOM XSS: безопасная обработка данных в JavaScript

Как данные из URL и сообщений попадают в опасные DOM-операции и почему безопасный серверный HTML не исключает XSS после загрузки страницы.

ВысокийВеб-рискНужна ручная проверкаВеб-приложения
Весь каталог

Источники и границы

  • Наличие CSP не доказывает безопасность всех DOM-приёмников.
  • Проверка требует исполнения согласованных сценариев в целевых браузерах.