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

Меню команд

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

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

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

Проверьте функции Convex перед деплоем: ключи в коде, публичные мутации, удаляющие по ID без проверки авторизации, CORS, передающий cookie любому сайту, отсутствующие валидаторы, api.* в cron-задачах и запросы, читающие таблицы целиком.

$5.00

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

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

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

Мутация вида remove = mutation({ args: { id: v.id("tasks") }, handler: async (ctx, args) => { await ctx.db.delete(args.id) } }) прекрасно работает в разработке, а в продакшене позволяет любому, кто скопирует URL вашего деплоя из браузера, удалить любую задачу: каждый экспортированный query, mutation и action публичен. То же касается corsRouter с allowCredentials: true и источниками по умолчанию, который возвращает обратно Origin любого сайта, и cron-задачи, вызывающей api.messages.send с автором "System", которую может отправить и любой клиент. Этот навык находит такие ошибки и другие ошибки Convex из списка ниже до деплоя и объясняет, как исправить каждую из них.

Ваш агент запускает сканер для файлов TypeScript и JavaScript в папке convex/ (функции, http.ts, crons.ts, schema.ts). Сканер знает, какие конструкторы публичные, а какие внутренние, читает параметры обработчиков в виде стрелочных функций, обычных функций и методов (а также именованные обработчики, объявленные в том же файле), отслеживает псевдонимы импортов и считает проверками доступа ctx.auth, getAuthUserId, вспомогательные функции авторизации, получающие ctx, пользовательские обёртки функций и аргументы secret, key или code, поэтому конфигурации Convex Auth и Clerk из документации проходят проверку без замечаний. Вызовы других функций через ctx.runMutation и вызовы компонентов, например ограничителя частоты запросов, не принимаются за проверки авторизации, а маршрутам вебхуков нужен настоящий вызов верификации, а не просто имя со словом webhook. Сканер никогда не запускает ваш код и не подключается к деплою. Он возвращает BLOCK, REVIEW или NOT FLAGGED с указанием файла, строки, причины и более безопасного подхода, а руководство по правилам ссылается на официальную страницу, на которой основано каждое правило. Секреты никогда не выводятся.

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

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

  • C01: API-ключи, токены и пароли, записанные в коде Convex: константы и свойства с именами секретов, заголовки Authorization, литеральные значения по умолчанию после process.env, известные форматы ключей (секретные ключи Stripe и Clerk, секреты вебхуков, ключи OpenAI, Anthropic, GitHub, Slack, Google и AWS, ключи деплоя Convex, включая preview-ключи, админ-ключи self-hosted, приватные ключи) и пароли в URL баз данных
  • C02: публичная мутация, которая изменяет, заменяет или удаляет документ по ID из своих аргументов без проверки вызывающего
  • C03: учётные данные разрешены для любого источника: corsRouter с allowCredentials и источниками по умолчанию, "*" или шаблонами общих хостов вроде "*.vercel.app", либо заголовок Origin, возвращаемый обратно с Access-Control-Allow-Credentials без проверки (или только с проверкой startsWith)

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

  • C11: публичная мутация или action, которые никогда не проверяют, кто их вызывает (сохранение через ctx.runMutation или вызов компонента проверкой не считается)
  • C12: публичная функция, читающая аргументы без валидатора args
  • C13: функции api.*, которые планируются, запускаются через ctx.runQuery / runMutation / runAction или вызываются cron-задачами вместо internal.*
  • C14: .filter в запросе к базе данных вместо индекса (кроме запросов с пагинацией)
  • C15: .collect() в запросе без диапазона индекса
  • C16: Date.now() или new Date() внутри query
  • C17: HTTP action, который записывает данные, планирует задачи или сохраняет файлы без ctx.auth, без проверки заголовка Authorization или подписи и без вызова верификации (svix, jwt, stripe constructEvent, HMAC)
  • C18: записи ctx.db, вызовы планировщика или ctx.runMutation / runAction без await
  • C19: возвращаемый Origin с учётными данными, единственная проверка которого нестрогая или неясная (endsWith без ведущей точки, includes, регулярное выражение без привязки)

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

  • Сканер (Python 3.9+, только стандартная библиотека)
  • Руководство по правилам с причиной, более безопасным подходом и официальным источником для каждого правила
  • Рискованный и безопасный примеры бэкенда на Convex (задачи, AI action, cron-задачи и HTTP-маршруты), а также реальный отчёт сканера по рискованному примеру

Ограничения

Сканер читает каждый файл отдельно. Обработчики, переданные по имени, отслеживаются, только если они объявлены в том же файле. Вспомогательным функциям и пользовательским обёрткам, определённым в других файлах, доверяется выполнение проверок, которые подразумевают их имена, поэтому функции, созданные через customMutation, authedMutation или Ents, и обработчики, импортированные из других файлов, не проверяются на отсутствие авторизации или валидаторов. Запросы, собранные из нескольких операторов, правила row-level security, а также списки разрешений или настройки CORS, хранящиеся в других файлах, не отслеживаются; клиентский код, файлы .env и настройки панели управления не читаются. NOT FLAGGED не является гарантией.

Содержимое

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

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

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

1 файл · 43.88 KB

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

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

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

Теги

convexbackendtypescriptsecuritydatabaseai agent skill
R
RR HH

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

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

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

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

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

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

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

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

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

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

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

Цена

$5.00