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

Меню команд

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

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

Перевірка безпеки Drizzle ORM

Перевірте проєкти на Drizzle ORM перед деплоєм: sql.raw(), зібраний з даних запиту, паролі бази даних у drizzle.config чи коді, drizzle-kit push --force у скриптах деплою, delete без where, грошові стовпці типу float і зовнішні ключі без індексів.

$5.00

Що ви отримаєте: 1 файл · 58.64 KB · ZIP

Переглянути варіанти купівлі

Опис товару

db.execute(sql.raw(`SELECT * FROM orders ORDER BY ${req.query.sort}`)) надсилає до бази даних власний текст запиту як SQL, а стартовий скрипт, що запускає drizzle-kit push --force, без запитань приймає кожну інструкцію, яка призводить до втрати даних, у продакшен-базі. Ця навичка знаходить такі та інші помилки Drizzle, наведені нижче, до деплою й пояснює, як виправити кожну з них.

Ваш агент запускає сканер для ваших файлів drizzle.config, файлів схем (pgTable, sqliteTable, mysqlTable, зокрема через pgTableCreator, pgSchema або псевдонім), коду запитів на TypeScript і JavaScript та скриптів package.json. Він пропускає коментарі й тестові файли, відстежує дані запитів з Express, Fastify, Koa, Hono, Next.js (обробники маршрутів, cookies, server actions), tRPC, Nuxt і SvelteKit через локальні змінні та параметри функцій, вважає тегований шаблон sql і конструктор запитів параметризованими, приймає значення, вибрані з фіксованого набору або обмежені ним перевіркою, що відхиляє все інше, і не чіпає локальні облікові дані для розробки, приклади хостів і заповнювачі з документації самого Drizzle. Він ніколи не запускає ваш код і не підключається до бази даних. Він повертає BLOCK, REVIEW або NOT FLAGGED із зазначенням файлу, рядка, причини та безпечнішого підходу. Секрети ніколи не виводяться.

Що перевіряється

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

  • D01: дані запиту (зокрема input у tRPC, аргументи server actions і cookies) у sql.raw(), також усередині шаблону sql або через JSON.stringify(), чи у звичайному рядку SQL, переданому в db.execute(), db.run(), db.all(), db.get() або db.values()
  • D02: паролі та токени бази даних, прописані в URL підключення, dbCredentials, об'єкті підключення drizzle() чи драйвера, у резервному значенні через ?? або || чи у скрипті package.json (URL, --password, --auth-token, PGPASSWORD=)
  • D03: drizzle-kit push --force, який запускає скрипт start, build, deploy, release або install, напряму чи через інший npm-скрипт

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

  • D11: sql.raw() або звичайний рядок SQL, зібраний з параметра, збережених даних чи результату іншої функції
  • D12: sql.identifier() з назвою таблиці чи стовпця з вхідних даних
  • D13: drizzle-kit push (без --force або --explain), який запускає скрипт start, build, deploy, release або install
  • D14: грошові стовпці (price, amount, balance, total...), що зберігаються як real, double або float
  • D15: стовпці паролів, назви яких не вказують, що в них зберігається хеш (таблиці облікових записів Better Auth не зачіпаються)
  • D16: зовнішні ключі без індексу на стовпці, що посилається, у таблицях PostgreSQL, SQLite і SQL Server
  • D17: db.delete(table) або db.update(table).set() без where() поза скриптами наповнення (seed) і скидання
  • D18: drizzle-kit studio, запущений з --host 0.0.0.0
  • D19: вимкнені перевірки сертифікатів бази даних (rejectUnauthorized: false, trustServerCertificate: true, sslmode=no-verify, NODE_TLS_REJECT_UNAUTHORIZED=0, ssl: 'require' у postgres.js)

Що входить у комплект

  • Сканер (Python 3.9+, лише стандартна бібліотека)
  • Посібник із правил з причиною, безпечнішим підходом і офіційним джерелом для кожного правила
  • Ризикований і безпечний приклади проєктів (drizzle.config.ts, схема, маршрути Express, package.json), а також реальний звіт сканера щодо ризикованого прикладу

Обмеження

Він читає кожен файл окремо й відстежує дані запиту лише через змінні в цьому файлі: значення, передані з допоміжних функцій в інших файлах, повідомляються як D11, а не D01, а області видимості визначаються за дужками й оголошеннями, а не повноцінним парсером. Файли SQL-міграцій, файли .env, Dockerfile, CI-воркфлоу і файли .svelte, .vue або .astro не читаються; версія Drizzle, права в базі даних і політики безпеки на рівні рядків не перевіряються. NOT FLAGGED не є гарантією.

Вміст

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

Як користуватися: Це навичка для агента: папка з файлом SKILL.md і скриптами Python, які може запускати ШІ-агент для програмування, наприклад Claude Code, Cursor або Codex CLI. Розпакуйте її в папку навичок вашого агента (для Claude Code: ~/.claude/skills/), а потім попросіть агента перевірити ваш проєкт. Скрипти також працюють самостійно з Python 3.9 або новішим, нічого встановлювати не потрібно. Вони лише читають ваші файли: без доступу до мережі, і жодні дані нікуди не надсилаються.

Що ви отримаєте

1 файл · 58.64 KB

  • drizzle-orm-safety-check-1.0.0.zipZIP · 58.64 KB
ЛіцензіяКомерційне використання дозволено
Перевірка пакетаПройдено

Getly відкрив завантажені файли й не знайшов нічого, що завадило б їх відкрити. Це не антивірусна перевірка і не оцінка якості.

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

Теги

drizzleormsql-injectiondatabasetypescriptai agent skill
R
RR HH

Поширені запитання

Чи отримаю я доступ одразу?

Так. Це цифровий товар: ви можете завантажити його одразу після оплати, просто зі своєї бібліотеки.

Чи можна використовувати його в комерційних проєктах?

Так. Комерційне використання дозволено: користуйтеся в особистому бізнесі та в тому, що продаєте. Ви не можете перепродавати чи поширювати сам файл.

Яка у вас політика повернення коштів?

Ви можете запросити повернення коштів протягом 30 дн. Якщо щось не так, подайте запит зі свого замовлення, і команда Getly його розгляне.

Які формати та розміри файлів я отримаю?

Ви завантажите 1 файл - ZIP - загалом 58.64 KB.

Чи отримую я безкоштовні оновлення?

Так: коли продавець випускає нову версію, ви можете повторно завантажити свіжі файли зі своєї бібліотеки безкоштовно. Останні оновлення дивіться в журналі змін.

Ціна

$5.00