Перейти к основному содержимому

Меню команд

Перейти на страницу или искать в каталоге

ИИ-инструменты и скрипты

Проверка конфигурации и функций Supabase

Проверьте проекты Supabase перед деплоем: сервисные ключи в переменных NEXT_PUBLIC_ или VITE_, секреты в config.toml, шаблоны редиректов, принимающие любой сайт, открытые Edge Functions с сервисным ключом и слабые настройки аутентификации.

$5.00

Что вы получите: 1 файл · 47.97 KB · ZIP

Варианты покупки

Описание товара

NEXT_PUBLIC_SUPABASE_SERVICE_ROLE_KEY отдаёт каждому посетителю ключ, который обходит все политики Row Level Security, а "https://*.vercel.app/**" в списке редиректов позволяет любому владельцу аккаунта Vercel получать magic-link и OAuth-редиректы ваших пользователей. Этот навык находит эти и другие перечисленные ниже ошибки Supabase до деплоя и подсказывает, как исправить каждую из них.

Ваш агент запускает сканер для supabase/config.toml (включая блоки веток [remotes]), кода Edge Functions в supabase/functions, клиентского и серверного кода на JavaScript и TypeScript (Next.js, SvelteKit, Nuxt, Vite, Astro, Expo), файлов Expo app.json и eas.json, файлов Python, Dart, Swift и Kotlin, в которых хранятся ключи, а также файлов .env. Он считывает роль внутри устаревших JWT-ключей, знает новые форматы sb_publishable_ и sb_secret_, игнорирует фиксированные публичные ключи локального стека CLI, не трогает глубокие ссылки приложений (myapp://**), считает значения env() и encrypted: ссылками и оценивает настройки регистрации и паролей, только если config.toml настраивает развёрнутый проект, поэтому файл, создаваемый supabase init, не помечается. Он никогда не запускает код и не подключается к Supabase. Результат: BLOCK, REVIEW или NOT FLAGGED с указанием файла, строки, причины и более безопасного решения. Секреты никогда не выводятся.

Что проверяется

BLOCK (исправить до выпуска)

  • U01: ключ service_role или секретный ключ в публичной переменной (NEXT_PUBLIC_, VITE_, EXPO_PUBLIC_, PUBLIC_ и другие, в том числе в eas.json), публичная переменная, содержащая сервисный ключ, или сервисный ключ в Nuxt runtimeConfig.public, Expo extra (app.config или app.json), Next.js env или Vite define
  • U02: JWT service_role или ключ sb_secret_, записанный в коде, app.json, eas.json или закоммиченном шаблоне env
  • U03: секреты OAuth, SMTP, SMS, CAPTCHA, auth hook, Studio, S3, Edge Runtime или Vault, записанные в config.toml вместо env()
  • U04: URL редиректов, шаблоны которых принимают чужие сайты (** в имени хоста, включая шаблон превью Netlify из документации, *.com, *.vercel.app, *-*.vercel.app, *.netlify.app, *.pages.dev и другие общие хостинги)

REVIEW (проверить перед релизом)

  • U11: Edge Functions с отключённой проверкой JWT (verify_jwt = false, --no-verify-jwt, withSupabase auth 'none' или 'publishable'), которые используют сервисный ключ и никак не проверяют вызывающую сторону (JWT пользователя, секретный ключ, подпись вебхука или секретный заголовок)
  • U12: регистрация по email без подтверждения email в развёрнутом проекте
  • U13: минимальная длина пароля меньше 8 в развёрнутом проекте
  • U14: анонимный вход без CAPTCHA в развёрнутом проекте
  • U15: срок действия JWT больше одного часа, отключённая ротация refresh-токенов, подтверждение смены email только по одному адресу или пропущенная проверка nonce в развёрнутом проекте
  • U16: URL сайта или редиректов с обычным http:// для нелокальных хостов
  • U17: публичные бакеты хранилища в config.toml или созданные в коде, если только слова в названии не указывают на публичный контент, например avatars или profile-pictures
  • U18: getSession(), которому доверяют в серверном коде (middleware, proxy, обработчики маршрутов, серверные компоненты и actions), без getClaims() или getUser()

Что входит в комплект

  • Сканер (Python 3.9+, только стандартная библиотека)
  • Руководство по правилам: причина, более безопасное решение и официальный источник Supabase для каждого правила
  • Рискованный и безопасный примеры проектов (config.toml, Edge Function, middleware для Next.js, скрипт seed и шаблон env), а также реальный отчёт сканера по рискованному проекту

Ограничения

Сканер читает файлы в том виде, в каком они записаны: настройки, изменённые только в панели управления Supabase, политики Row Level Security и SQL-миграции, а также секреты, заданные через supabase secrets set, ему неизвестны. Проверка вызывающей стороны в Edge Function ищется в том же файле, а для U11 нужна папка проекта, в которой находится config.toml или скрипт деплоя. Доступность в браузере определяется по префиксам переменных и настройкам Nuxt, Expo, Next.js env и Vite define, а не по отслеживанию импортов. NOT FLAGGED не является гарантией.

Содержимое

Один ZIP-архив с 19 файлами: SKILL.md, сканер в scripts/ (8 файлов Python), references/rules.md (каждое правило с причиной и более безопасным решением) и examples/ (10 файлов-примеров плюс report.md, реальный отчёт сканера по рискованному примеру).

Как использовать: Это навык для агента: папка с файлом SKILL.md и скриптами на Python, которые может запускать ИИ-агент для программирования, например Claude Code, Cursor или Codex CLI. Распакуйте архив в папку навыков вашего агента (для Claude Code: ~/.claude/skills/), затем попросите агента проверить ваш проект. Скрипты также работают самостоятельно с Python 3.9 или новее, ничего устанавливать не нужно. Они только читают ваши файлы: без доступа к сети, никакие данные никуда не отправляются.

Что вы получите

1 файл · 47.97 KB

  • supabase-config-functions-check-1.0.0.zipZIP · 47.97 KB
ЛицензияКоммерческое использование разрешено
Проверка пакетаПройдена

Getly открыл загруженные файлы и не нашёл ничего, что помешало бы их открыть. Это не проверка на вирусы и не оценка качества.

Опубликовано12 нояб. 2026 г.
Размер файла47.97 KB
Формат файлаZIP
Версияv1.0

Теги

supabaseedge-functionsauthsecurityapi-keysai agent skill
R
RR HH

Частые вопросы

Доступ открывается сразу?

Да. Это цифровой товар - скачать его можно сразу после оплаты, прямо из своей библиотеки.

Можно ли использовать в коммерческих проектах?

Да. Коммерческое использование разрешено: в своём бизнесе и в том, что вы продаёте. Перепродавать и распространять сам файл нельзя.

Какие условия возврата?

Запросить возврат можно в течение 30 дней. Если что-то не так, оформите заявку в своём заказе - её рассмотрит команда Getly.

Какие форматы и размеры файлов я получу?

Вы скачаете 1 файл - ZIP - всего 47.97 KB.

Обновления бесплатны?

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

Цена

$5.00