ШІ-інструменти та скрипти
Перевірка безпеки Drizzle ORM
Перевірте проєкти на Drizzle ORM перед деплоєм: sql.raw(), зібраний з даних запиту, паролі бази даних у drizzle.config чи коді, drizzle-kit push --force у скриптах деплою, delete без where, грошові стовпці типу float і зовнішні ключі без індексів.
Що ви отримаєте: 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
ШІ-інструменти та скрипти
Перевірка безпеки Drizzle ORM
Перевірте проєкти на Drizzle ORM перед деплоєм: sql.raw(), зібраний з даних запиту, паролі бази даних у drizzle.config чи коді, drizzle-kit push --force у скриптах деплою, delete без where, грошові стовпці типу float і зовнішні ключі без індексів.
Getly відкрив завантажені файли й не знайшов нічого, що завадило б їх відкрити. Це не антивірусна перевірка і не оцінка якості.
Теги
Поширені запитання
Чи отримаю я доступ одразу?
Так. Це цифровий товар: ви можете завантажити його одразу після оплати, просто зі своєї бібліотеки.
Чи можна використовувати його в комерційних проєктах?
Так. Комерційне використання дозволено: користуйтеся в особистому бізнесі та в тому, що продаєте. Ви не можете перепродавати чи поширювати сам файл.
Яка у вас політика повернення коштів?
Ви можете запросити повернення коштів протягом 30 дн. Якщо щось не так, подайте запит зі свого замовлення, і команда Getly його розгляне.
Які формати та розміри файлів я отримаю?
Ви завантажите 1 файл - ZIP - загалом 58.64 KB.
Чи отримую я безкоштовні оновлення?
Так: коли продавець випускає нову версію, ви можете повторно завантажити свіжі файли зі своєї бібліотеки безкоштовно. Останні оновлення дивіться в журналі змін.
Ціна
$5.00



