Перейти к содержанию

Может ли пользователь читать чужие строки Supabase?

Может, если доступ разрешает политика, запрос выполняется с повышенными привилегиями или чужую строку возвращает другой слой приложения. Сначала подтвердите, что запись должна быть приватной. Затем сравните один и тот же ID через Data API и через проблемный экран.

Редакция Scantelio ·

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

Пометьте тестовую строку Б уникальным вымышленным значением. Зафиксируйте таблицу или представление, проект, роль и ожидаемое правило: например, «видит только владелец, кроме явно приглашённых». Не копируйте ключи в тикет.

Порядок проверки

Изолируйте запрос пользователя

Под сессией А запросите id строки Б с публичным ключом. С теми же параметрами проверьте Б как владельца. Если Б видит строку, а А получает пустой массив, прямой SELECT для этой пары её не раскрыл.

Найдите путь, который раскрывает строку

Если интерфейс А всё равно показывает метку Б, проверьте ответ собственного backend, RPC, представления и кэш. Если метку отдаёт и прямой запрос, проверьте RLS именно на этой таблице, применимые SELECT-политики и членство А в организациях.

Шаблон наблюдения для таблицы notes: одинаковый ID, разные сессии

Б / Data API: 200, [{"id":"note-b","body":"Демо-Б"}]
А / Data API: 200, []
А / экран:    видна «Демо-Б» → проверить ответ сервера и кэш

Критерий результата и ограничения

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

Что остаётся непроверенным

Пример предполагает запрос списка, а не .single(). Пустой массив без успешного контроля владельца не подтверждает защиту.

Материалы и первоисточники

Скачать для своего проекта

Документация