ИИ-инструменты и скрипты
Проверка безопасности 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



