ИИ-инструменты и скрипты
Проверка безопасности API на Hono
Проверьте API на Hono перед деплоем: CORS, отражающий любой origin вместе с credentials, секреты аутентификации в коде или в vars Wrangler, данные запроса в raw() или c.html(), SQL, собранный из запроса, открытые редиректы, отсутствующий csrf() и многое другое.
Что вы получите: 1 файл · 47.45 KB · ZIP
Варианты покупкиОписание товара
cors({ origin: (origin) => origin, credentials: true }) позволяет любому сайту вызывать ваш API с cookies ваших пользователей и читать ответы, а c.html() с обычной шаблонной строкой отправляет ${c.req.query('q')} в браузер без экранирования, потому что экранирует только тег html. Этот навык находит эти и другие перечисленные ниже ошибки Hono до деплоя и подсказывает, как исправить каждую из них.
Ваш агент запускает сканер для вашего кода на Hono (TypeScript и JavaScript на Cloudflare Workers, Bun, Deno или Node, включая импорты jsr:@hono/hono) и вашего wrangler.toml или wrangler.json. Он пропускает комментарии и тестовые файлы, отслеживает данные запроса (params, query, заголовки, cookies, тело и валидированный ввод) через локальные переменные, считает безопасными тег html, JSX, D1 .bind() и тегированные SQL-шаблоны, знает, что привязки c.env и env(c) не являются секретами в виде литералов, и учитывает secureHeaders(), csrf() и bodyLimit(), зарегистрированные в любом месте проекта. Он никогда не запускает ваше приложение. Результат: BLOCK, REVIEW или NOT FLAGGED с указанием файла, строки, причины и более безопасного решения. Секреты никогда не выводятся.
Что проверяется
BLOCK (исправить до выпуска)
- H01: cors() с credentials и функцией origin, которая возвращает любой origin запроса, или заголовок Access-Control-Allow-Origin, скопированный из запроса
- H02: секреты для JWT-, Basic- и Bearer-аутентификации или секреты подписанных cookies, записанные в коде, в качестве запасного значения или в vars Wrangler (публичные ключи и настройки вроде времени жизни токенов не затрагиваются)
- H03: данные запроса в raw(), в c.html() с обычной шаблонной строкой или с функцией из того же файла, которая её собирает, либо в dangerouslySetInnerHTML
- H04: SQL для D1, pg, Prisma или Drizzle, собранный из данных запроса с помощью шаблонного литерала или + (списки плейсхолдеров и значения, выбранные из фиксированных вариантов, допустимы)
REVIEW (проверить перед релизом)
- H11: CORS с credentials и origin '*', проверки origin через startsWith, includes, endsWith без точки или незаякоренные регулярные выражения, а также csrf(), разрешающий межсайтовые запросы
- H12: c.redirect() на URL из запроса без проверки origin или списка разрешённых адресов (одна лишь проверка startsWith('/') всё равно пропускает /\evil.com)
- H13: приложения, отдающие HTML без secureHeaders()
- H14: маршруты загрузки файлов без bodyLimit()
- H15: onError, возвращающий сообщения об ошибках или трассировки стека
- H16: POST-маршруты с аутентификацией через cookies без csrf() или сессионных cookies с SameSite
- H17: middleware аутентификации, зарегистрированный после маршрутов, которые он должен защищать
- H18: сессионные cookies без httpOnly или secure
- H19: c.html(), получающий данные из функции представления, которая вызывается с данными запроса и внутрь которой сканер заглянуть не может
Что входит в комплект
- Сканер (Python 3.9+, только стандартная библиотека)
- Руководство по правилам: причина, более безопасное решение и официальный источник для каждого правила
- Рискованный и безопасный примеры проектов Workers (маршруты Hono, D1, R2 и wrangler.toml), а также реальный отчёт сканера по рискованному проекту
Ограничения
Сканер читает каждый файл отдельно и отслеживает данные запроса только через переменные в этом файле: значения, переданные во вспомогательные функции из других файлов, и цепочки определений маршрутов не отслеживаются, а secureHeaders(), csrf() и bodyLimit() учитываются для всего проекта без сопоставления путей. Он не сверяет вашу версию Hono с бюллетенями безопасности, не проверяет настройки панели Cloudflare и секреты, заданные через wrangler secret put. NOT FLAGGED не является гарантией.
Содержимое
Один ZIP-архив с 17 файлами: SKILL.md, сканер в scripts/ (5 файлов Python), references/rules.md (каждое правило с причиной и более безопасным решением) и examples/ (9 файлов-примеров плюс report.md, реальный отчёт сканера по рискованному примеру).
Как использовать: Это навык для агента: папка с файлом SKILL.md и скриптами на Python, которые может запускать ИИ-агент для программирования, например Claude Code, Cursor или Codex CLI. Распакуйте архив в папку навыков вашего агента (для Claude Code: ~/.claude/skills/), затем попросите агента проверить ваш проект. Скрипты также работают самостоятельно с Python 3.9 или новее, ничего устанавливать не нужно. Они только читают ваши файлы: без доступа к сети, никакие данные никуда не отправляются.
Что вы получите
1 файл · 47.45 KB
- hono-api-safety-check-1.0.0.zipZIP · 47.45 KB
ИИ-инструменты и скрипты
Проверка безопасности API на Hono
Проверьте API на Hono перед деплоем: CORS, отражающий любой origin вместе с credentials, секреты аутентификации в коде или в vars Wrangler, данные запроса в raw() или c.html(), SQL, собранный из запроса, открытые редиректы, отсутствующий csrf() и многое другое.
Getly открыл загруженные файлы и не нашёл ничего, что помешало бы их открыть. Это не проверка на вирусы и не оценка качества.
Теги
Частые вопросы
Доступ открывается сразу?
Да. Это цифровой товар - скачать его можно сразу после оплаты, прямо из своей библиотеки.
Можно ли использовать в коммерческих проектах?
Да. Коммерческое использование разрешено: в своём бизнесе и в том, что вы продаёте. Перепродавать и распространять сам файл нельзя.
Какие условия возврата?
Запросить возврат можно в течение 30 дней. Если что-то не так, оформите заявку в своём заказе - её рассмотрит команда Getly.
Какие форматы и размеры файлов я получу?
Вы скачаете 1 файл - ZIP - всего 47.45 KB.
Обновления бесплатны?
Да - когда продавец выпускает новую версию, вы можете бесплатно скачать актуальные файлы из своей библиотеки. Последние изменения смотрите в истории версий.
Цена
$5.00



