SSR-страница может выглядеть корректно, но в HTML-исходнике содержать лишние персональные данные: email, телефон, внутренние поля или данные другого пользователя.

Это особенно опасно, потому что данные могут попасть в кеш CDN, поисковые роботы, логи и инструменты просмотра исходника.

Коротко: в HTML нужно отдавать только те данные, которые действительно нужны текущему пользователю и странице.

Почему возникает проблема

Утечка появляется через initial state, hydration payload, общий кеш SSR, слишком широкий API-запрос на сервере, сериализацию всей модели пользователя или ошибку tenant-фильтра.

Что проверить в первую очередь

  • что видно в view-source
  • какие данные попадают в initial state
  • есть ли CDN/SSR кеш
  • учитывается ли текущий пользователь
  • не сериализуется ли вся модель вместо нужных полей

Как я решаю такую задачу

Я анализирую серверную выдачу до выполнения JavaScript и убираю лишние поля на backend/SSR-слое.

  • смотрю HTML-исходник под разными пользователями
  • нахожу источник данных в SSR
  • ограничиваю payload нужными полями
  • исправляю кеш и права
  • добавляю проверку на отсутствие чувствительных полей

Что подготовить

  • страницу с SSR
  • пример лишних данных
  • стек проекта
  • доступ к frontend/backend-коду
  • есть ли CDN или edge cache

Сроки и риски

Сначала нужно закрыть утечку и сбросить опасный кеш. Затем стоит проверить похожие SSR-страницы и initial state.

Чего лучше не делать

Не скрывайте данные только CSS или JavaScript. Если они уже в HTML, пользователь может их увидеть.

FAQ

Почему данные видны в исходнике, хотя на странице скрыты?

SSR уже отдал их в HTML или hydration payload до работы frontend.

CDN может усугубить проблему?

Да, если закеширует персональную HTML-страницу.

Нужно ли чистить кеш?

Да, если опасные HTML-ответы могли попасть в CDN или proxy.

Как проверять дальше?

Автотестом или сканером, который ищет чувствительные поля в HTML.

Нужна похожая задача?

Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Пришлите ссылку, пример ошибки и короткое описание того, как должно работать. Я посмотрю задачу, предложу безопасный план и скажу, какие доступы понадобятся.

Итог

SSR должен отдавать минимальный безопасный HTML, без лишних персональных данных, чужих записей и кеширования приватной выдачи.