Перейти до основного вмісту

Меню команд

Перейдіть на сторінку або пошукайте в каталозі

ШІ-інструменти та скрипти

Перевірка функцій 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