Курс

Что такое RLS и зачем он нужен

МОДУЛЬ 6: БЕЗОПАСНОСТЬ • Урок 1 из 2

Авторизация работает. Пользователи входят. Следующий шаг — защитить данные так, чтобы каждый видел только своё.

Для этого в Supabase есть RLS (Row Level Security) — защита на уровне базы данных.

[ ПРОБЛЕМА ]

Сейчас база данных работает так:

Вася просит: "покажи все задачи"
База отвечает: ВСЕ задачи всех пользователей

Петя просит: "покажи все задачи"
База отвечает: ВСЕ задачи всех пользователей

Без дополнительной защиты данные доступны всем пользователям приложения.

[ ЧТО ТАКОЕ RLS ]

RLS = Row Level Security = Защита на уровне строк.

Это правила прямо в базе данных:

  • "Пользователь может видеть только СВОИ строки"
  • "Пользователь может менять только СВОИ строки"

Работает автоматически для любого запроса.

После включения RLS:

Вася просит: "покажи все задачи"
База АВТОМАТИЧЕСКИ добавляет: "где владелец = Вася"
База отвечает: только задачи Васи

Петя просит: "покажи все задачи"
База АВТОМАТИЧЕСКИ добавляет: "где владелец = Петя"
База отвечает: только задачи Пети

Даже если хакер напрямую обратится к базе — получит только то, что ему разрешено.

[ ПОЧЕМУ ЭТО ВАЖНО ]

Без RLS:

  • Пользователи видят данные друг друга
  • Нет разделения по владельцам

С RLS:

  • Каждый видит только своё
  • Защита работает автоматически на уровне базы
💡 Важный момент:

RLS защищает НА УРОВНЕ БАЗЫ. Даже если в твоём коде будет дыра — база не отдаст чужие данные. Это последний рубеж обороны.

[ КАК ЭТО РАБОТАЕТ ]

  1. В таблице есть колонка user_id — кто владелец записи
  2. Когда пользователь входит — Supabase знает его ID
  3. RLS-правила сравнивают: "ID пользователя = user_id записи?"
  4. Если да — показываем. Если нет — как будто записи не существует.
Запись: {title: "Купить молоко", user_id: "вася123"}

Вася (id: вася123) запрашивает → видит запись ✓
Петя (id: петя456) запрашивает → НЕ видит запись ✗

[ ЧТО БУДЕМ ДЕЛАТЬ ]

В следующем уроке:

  1. Добавим колонку user_id в таблицу
  2. Включим RLS на таблице
  3. Создадим правила: кто что может делать
  4. Проверим что работает

После этого твои данные будут защищены на уровне базы.

[ ПРОВЕРКА ]

Что должно быть:

  • Понимаешь проблему: сейчас данные открыты всем
  • Знаешь что RLS защищает на уровне базы
  • Понимаешь принцип: каждый видит только своё

Готов? → Идём настраивать.

💬 Совет:

RLS — одна из тех вещей, которые настраиваешь один раз и забываешь. 10 минут работы — и данные защищены на уровне базы.