Если экспорт персональных данных содержит чужие записи, это критическая ошибка доступа. Ее нужно исправлять быстро и аккуратно.
Такая проблема влияет на доверие, договорные обязательства и юридические риски, особенно в B2B-сервисах и личных кабинетах.
Коротко: экспорт должен применять те же или более строгие права, что и обычный просмотр данных.Почему возникает проблема
Чужие записи попадают в экспорт из-за отсутствия tenant-фильтра, неверного join, кеша файла, очереди, которая запускается от системного пользователя без ограничения, или проверки прав только в интерфейсе.
Что проверить в первую очередь
- какой пользователь запускает экспорт
- какой SQL или фильтр формирует выборку
- учитывается ли tenant/project
- не переиспользуется ли старый файл
- есть ли аудит скачиваний
Как я решаю такую задачу
Я сначала закрываю возможность повторной выгрузки, затем проверяю код экспорта и похожие отчеты.
- локализую опасный экспорт
- ограничиваю доступ при необходимости
- исправляю фильтры и права
- очищаю неверно созданные файлы
- проверяю другие экспорты и добавляю тест
Что подготовить
- пример файла с чужими записями
- кто запускал экспорт
- какие данные должны быть в выгрузке
- доступ к коду и базе
- список похожих экспортов
Сроки и риски
Первичное ограничение нужно делать сразу. Полная проверка зависит от количества экспортов и сложности прав доступа.
Чего лучше не делать
Не чините только frontend-кнопку. Экспорт должен быть защищен на backend и уровне запроса данных.
FAQ
Нужно ли удалять старые файлы экспорта?
Да, если они содержат лишние данные и доступны для скачивания.
Нужно ли смотреть логи?
Да, чтобы понять, кто и когда скачивал файл.
Почему интерфейс показывает правильно, а экспорт нет?
Экспорт может использовать отдельный запрос без тех же фильтров.
Как не повторить ошибку?
Добавить тесты прав доступа для экспорта и ревизию похожих отчетов.
Нужна похожая задача?
Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Пришлите ссылку, пример ошибки и короткое описание того, как должно работать. Я посмотрю задачу, предложу безопасный план и скажу, какие доступы понадобятся.
Итог
Экспорт персональных данных должен выгружать только разрешенные записи, логировать доступ и не переиспользовать чужие файлы или кеш.