Практическое руководство FindRisk
Безопасность JavaScript: прототипы, DOM, postMessage и утечки URL
Безопасность браузерного кода начинается с границ доверия. HTML, объект конфигурации и сообщение другого окна могут влиять на приложение даже без явного script. Свяжите источник данных с местом использования, а не ограничивайтесь поиском опасных строк.
Что сделать
Материалы по теме
Prototype Pollution: безопасное объединение объектов JavaScript
Как недоверенные ключи влияют на прототипы JavaScript и почему опасны универсальные deep merge и присваивание по пользовательскому пути.
DOM Clobbering: как HTML подменяет значения JavaScript
Почему элементы с id и name могут влиять на именованные DOM-свойства и как избежать небезопасного чтения конфигурации из window и document.
postMessage: проверка origin, отправителя и структуры сообщения
Безопасный обмен сообщениями между окнами: точный targetOrigin, event.origin, event.source и ограниченный набор разрешённых действий.
Утечка через Referer: токены в URL и Referrer-Policy
Как приватные адреса и токены попадают в Referer, историю и журналы и почему одной Referrer-Policy недостаточно для защиты секретов в URL.
DOM XSS: безопасная обработка данных в JavaScript
Как данные из URL и сообщений попадают в опасные DOM-операции и почему безопасный серверный HTML не исключает XSS после загрузки страницы.
Content-Security-Policy (CSP): безопасный запуск и проверка политики
Как внедрить CSP без поломки сайта: собрать реальные источники, начать с Report-Only и проверить, что политика действительно защищает браузер.
Subresource Integrity (SRI): как проверять сторонний JavaScript
Как атрибут integrity помогает контролировать внешний JavaScript, где SRI не работает и почему список сторонних скриптов всё равно нужен.
Источники и границы
- Наличие CSP не доказывает безопасность всех DOM-приёмников.
- Проверка требует исполнения согласованных сценариев в целевых браузерах.