ИИ-инструменты и скрипты
Проверка безопасности NestJS
Проверьте приложения NestJS перед развёртыванием: synchronize в TypeORM, жёстко заданные секреты JWT, SQL из шаблонных строк, пробелы в ValidationPipe, открытый CORS, отсутствие helmet и ограничений частоты запросов, доступный Swagger и защитники авторизации, пропускающие запросы.
Что вы получите: 1 файл · 57.23 KB · ZIP
Варианты покупкиОписание товара
Одного synchronize: true, оставленного в TypeOrmModule.forRoot, как в примере документации, достаточно, чтобы TypeORM удалил столбец вместе с данными при первом переименовании свойства сущности в рабочей среде. Одно переопределение handleRequest, возвращающее пользователя без выброса исключения, пропускает любой запрос через JwtAuthGuard независимо от наличия токена. Этот навык находит эти и ещё одиннадцать ошибок NestJS до развёртывания и объясняет, как исправить каждую.
Ваш агент запускает сканер для исходного кода NestJS: main.ts, модулей, контроллеров, защитников, стратегий Passport, сущностей и источников данных TypeORM, сервисов и ormconfig.json. Он знает подходы NestJS (useGlobalPipes и APP_PIPE, APP_GUARD с ThrottlerGuard, декоратор @Public() из документации с глобальным JwtAuthGuard, JwtModule.register, ClassSerializerInterceptor с @Exclude), отслеживает SQL через переменные, из которых он формируется, оценивает каждое приложение монорепозитория отдельно, пропускает комментарии и тестовые файлы и принимает обычные исправления (параметры запросов, ParseIntPipe, config.getOrThrow, проверку среды вокруг Swagger). Безопасный пример проекта, написанный по рекомендациям документации NestJS, проходит без замечаний. Сканер никогда не запускает Nest или приложение. Результат: БЛОКИРОВКА, ПРОВЕРКА или НЕ ОТМЕЧЕНО с указанием файла, строки, причины и более безопасного подхода. Секретные данные никогда не выводятся, даже в строках, отмеченных другим правилом.
Что проверяется
БЛОКИРОВКА (исправить до выпуска)
NS01: synchronize или dropSchema в TypeORM со значением true либо sync в Sequelize с force или alter в конфигурации приложения
NS02: жёстко заданные секреты (JWT secret или secretOrKey, jwtConstants, пароли баз данных и URL подключения в коде или ormconfig.json, явные запасные значения вроде process.env.JWT_SECRET || '...')
NS03: SQL, формируемый из изменяемых значений (query(), $queryRawUnsafe, where или having в QueryBuilder с ${...} или +)
ПРОВЕРКА (проверить до выпуска)
NS11: отсутствие глобального ValidationPipe или whitelist: true в нём
NS12: @Body() или @Query() с типом any, интерфейсом или обобщённым типом либо массивом без ParseArrayPipe
NS13: CORS, разрешающий передачу учётных данных с любого источника (origin: true или '*' с credentials: true)
NS14: отсутствие helmet в HTTP-приложении
NS15: Swagger UI без проверки среды либо принудительно включённые GraphiQL или интроспекция
NS16: маршруты входа и другие маршруты аутентификации без ограничения частоты запросов (не подключён ThrottlerGuard или используется @SkipThrottle)
NS17: защитники, пропускающие запросы (handleRequest, никогда не выбрасывающий исключений, canActivate, всегда возвращающий true, ignoreExpiration: true)
NS18: @Public() на маршрутах или контроллерах, создающих, изменяющих или удаляющих данные
NS19: столбцы паролей, которые могут попасть в ответы (нет select: false либо используется @Exclude без ClassSerializerInterceptor)
NS20: столбцы сортировки из значений запроса (orderBy(dto.sort), orderBy
p.${sort})) без проверки по списку разрешённых значений
Что входит в комплект
Сканер (Python 3.9+, только стандартная библиотека)
Руководство по правилам с обоснованием и более безопасным подходом для каждого правила
Примеры проекта NestJS с уязвимостями и безопасного проекта (main.ts, модуль приложения, модуль аутентификации, стратегия и защитник JWT, контроллеры, сущность TypeORM и сервис), а также реальный отчёт сканера для примера с уязвимостями
Ограничения
Сканер читает каждый файл отдельно и при проверке папки учитывает некоторые сведения на уровне приложения (helmet, глобальный pipe, подключённый защитник ограничения запросов, сериализатор). Значения, передаваемые между файлами, классы DTO из других файлов, защитники, создаваемые фабриками, и параметры, формируемые во время выполнения, не отслеживаются. Авторизация внутри обработчиков, CSRF, запросы Mongoose, шлюзы WebSocket и уязвимости зависимостей не проверяются. Статус НЕ ОТМЕЧЕНО не даёт гарантий.
Содержимое архива
Один ZIP-архив с 38 файлами: SKILL.md, сканер в scripts/ (6 файлов Python), references/rules.md (все правила с обоснованием и более безопасным подходом), а также examples/ (29 файлов примеров и report.md, реальный результат сканирования примера с уязвимостями).
Как использовать: Это навык для агента: папка с файлом SKILL.md и скриптами Python, которые может запускать ИИ-агент для разработки, например Claude Code, Cursor или Codex CLI. Распакуйте архив в папку навыков вашего агента (для Claude Code: ~/.claude/skills/), затем попросите агента проверить проект. Скрипты можно запускать и отдельно с Python 3.9 или новее, без установки дополнительных компонентов. Они только читают ваши файлы: не обращаются к сети и ничего никуда не отправляют.
Что вы получите
1 файл · 57.23 KB
- nestjs-safety-check-1.0.0.zipZIP · 57.23 KB
ИИ-инструменты и скрипты
Проверка безопасности NestJS
Проверьте приложения NestJS перед развёртыванием: synchronize в TypeORM, жёстко заданные секреты JWT, SQL из шаблонных строк, пробелы в ValidationPipe, открытый CORS, отсутствие helmet и ограничений частоты запросов, доступный Swagger и защитники авторизации, пропускающие запросы.
Включено в Getly ProПолучить Pro
Теги
Частые вопросы
Доступ открывается сразу?
Да. Это цифровой товар - скачать его можно сразу после оплаты, прямо из своей библиотеки.
Можно ли использовать в коммерческих проектах?
Да. Коммерческое использование разрешено: в своём бизнесе и в том, что вы продаёте. Перепродавать и распространять сам файл нельзя.
Какие условия возврата?
Запросить возврат можно в течение 30 дней. Если что-то не так, оформите заявку в своём заказе - её рассмотрит команда Getly.
Какие форматы и размеры файлов я получу?
Вы скачаете 1 файл - ZIP - всего 57.23 KB.
Обновления бесплатны?
Да - когда продавец выпускает новую версию, вы можете бесплатно скачать актуальные файлы из своей библиотеки. Последние изменения смотрите в истории версий.
Цена
$5.00



