ИИ-инструменты и скрипты
Проверка безопасности сайтов на Astro
Проверьте сайт на Astro перед деплоем: секреты в переменных PUBLIC_, vite.define или клиентских островах, set:html с данными запроса, CORS, отражающий любой origin, отключённый checkOrigin, открытые редиректы и слабые сессионные cookies.
Что вы получите: 1 файл · 47.04 KB · ZIP
Варианты покупкиОписание товара
PUBLIC_STRIPE_SECRET_KEY в .env.production или import.meta.env.OPENAI_API_KEY, переданный как prop в остров client:load, попадает в JavaScript и HTML, которые скачивает каждый посетитель. Значение ?q=, переданное в set:html, позволяет кому угодно отправить ссылку, которая запускает скрипты на вашем домене. Этот навык находит эти и другие перечисленные ниже ошибки Astro до деплоя и подсказывает, как исправить каждую из них.
Ваш агент запускает сканер для файлов astro.config, страниц и компонентов .astro (frontmatter, шаблон и скрипты), эндпоинтов, middleware и actions, файлов .env, а также компонентов, читающих переменные PUBLIC_. Он знает правила Astro: в браузер попадают только переменные PUBLIC_ и клиентские поля astro:env, props для client:* и значения define:vars сериализуются в страницу, тогда как props для server:defer шифруются, set:html не экранируется, Astro.params фиксируется во время сборки только на пререндеренных страницах, а checkOrigin включён по умолчанию. Публикуемые (publishable), anon и браузерные ключи карт, переключатели функций и флаги, полученные из секрета (!!key), он считает допустимыми, читает файлы .env только в папках, где есть файлы Astro, не предупреждает об удалённых изображениях в статических сборках и никогда не собирает и не запускает ваш проект. Результат: BLOCK, REVIEW или NOT FLAGGED с указанием файла, строки, причины и более безопасного решения. Секреты никогда не выводятся.
Что проверяется
BLOCK (исправить до выпуска)
- A01: переменная с секретным именем, ставшая публичной: переменные PUBLIC_ в файлах .env и в коде, поля astro:env с context "client" и значения PUBLIC_ в известных форматах ключей
- A02: vite.define, которому передано всё окружение, переменная с секретным именем или ключ-литерал
- A03: серверные секреты (или объекты, которые их содержат), переданные в острова client:*, define:vars, HTML-атрибуты или текст страницы
- A04: set:html с данными из строки запроса, формы, заголовка или маршрута, отрисовываемого по запросу, в том числе через рендерер Markdown
- A05: CORS, который копирует Origin запроса в Access-Control-Allow-Origin вместе с credentials и без списка разрешённых адресов
REVIEW (проверить перед релизом)
- A11: отключённый security.checkOrigin
- A12: security.allowedDomains, доверяющий любому пересланному хосту
- A13: image.remotePatterns, разрешающие любой хост на сайте с рендерингом по запросу
- A14: редиректы на значение ?next= или поля формы, которое предварительно не проверяется
- A15: source maps, публикуемые вместе со сборкой
- A16: cookies сессии или токенов, установленные без httpOnly и secure
- A17: секреты astro:env, помеченные как public на сервере или получившие значение по умолчанию в виде литерала
- A18: CORS "*" вместе с credentials
Что входит в комплект
- Сканер (Python 3.9+, только стандартная библиотека)
- Руководство по правилам: причина, более безопасное решение и официальный источник для каждого правила
- Рискованный и безопасный примеры интернет-магазина (конфигурация, .env, страницы и API-маршруты), а также реальный отчёт сканера по рискованному примеру
Ограничения
Сканер читает каждый файл отдельно и отслеживает значения только через простые присваивания в том же файле, поэтому данные, переданные через импортированные вспомогательные функции или родительские компоненты, не отслеживаются. Заголовки хостинга, правила CDN и то, проверяет ли эндпоинт или action, кто является пользователем, ему неизвестны, содержимое Markdown и MDX не читается, а компоненты JSX, TSX, Vue и Svelte проверяются только на секреты PUBLIC_. NOT FLAGGED не является гарантией.
Содержимое
Один ZIP-архив с 22 файлами: SKILL.md, сканер в scripts/ (7 файлов Python), references/rules.md (каждое правило с причиной и более безопасным решением) и examples/ (12 файлов-примеров плюс report.md, реальный отчёт сканера по рискованному примеру).
Как использовать: Это навык для агента: папка с файлом SKILL.md и скриптами на Python, которые может запускать ИИ-агент для программирования, например Claude Code, Cursor или Codex CLI. Распакуйте архив в папку навыков вашего агента (для Claude Code: ~/.claude/skills/), затем попросите агента проверить ваш проект. Скрипты также работают самостоятельно с Python 3.9 или новее, ничего устанавливать не нужно. Они только читают ваши файлы: без доступа к сети, никакие данные никуда не отправляются.
Что вы получите
1 файл · 47.04 KB
- astro-safety-check-1.0.0.zipZIP · 47.04 KB
ИИ-инструменты и скрипты
Проверка безопасности сайтов на Astro
Проверьте сайт на Astro перед деплоем: секреты в переменных PUBLIC_, vite.define или клиентских островах, set:html с данными запроса, CORS, отражающий любой origin, отключённый checkOrigin, открытые редиректы и слабые сессионные cookies.
Getly открыл загруженные файлы и не нашёл ничего, что помешало бы их открыть. Это не проверка на вирусы и не оценка качества.
Теги
Частые вопросы
Доступ открывается сразу?
Да. Это цифровой товар - скачать его можно сразу после оплаты, прямо из своей библиотеки.
Можно ли использовать в коммерческих проектах?
Да. Коммерческое использование разрешено: в своём бизнесе и в том, что вы продаёте. Перепродавать и распространять сам файл нельзя.
Какие условия возврата?
Запросить возврат можно в течение 30 дней. Если что-то не так, оформите заявку в своём заказе - её рассмотрит команда Getly.
Какие форматы и размеры файлов я получу?
Вы скачаете 1 файл - ZIP - всего 47.04 KB.
Обновления бесплатны?
Да - когда продавец выпускает новую версию, вы можете бесплатно скачать актуальные файлы из своей библиотеки. Последние изменения смотрите в истории версий.
Цена
$5.00



