# Представляємо AfterPack Site Security Scanner

Безкоштовний інструмент, який показує, що саме розкриває ваш вебсайт — витік секретів, незахищений вихідний код та багато іншого. Скануйте будь-який сайт за лічені секунди.

Source: https://www.afterpack.dev/uk/blog/announcing-site-scanner

Published: 2026-03-01 · Author: Nikita Savchenko · Tags: announcement, security

Сьогодні ми запускаємо [AfterPack Site Security Scanner](https://www.afterpack.dev/security-scanner) — безкоштовний інструмент, який сканує ваш вебсайт за допомогою реального браузера та показує, що саме ви відкриваєте для всього світу. Спробуйте його в браузері або запустіть [`npx afterpack audit <url>`](https://www.npmjs.com/package/afterpack) з терміналу.

## Що ваш вебсайт показує всім

Ось те, про що більшість розробників не замислюються: кожен JavaScript-файл, який ви поставляєте, є публічним. Кожен вбудований скрипт, кожен сторонній тег, кожна source map, яку ваш інструмент збірки тихо генерує. Все це там, готове до прочитання.

І це не просто читабельне — воно _доступне для пошуку_. Автоматизовані сканери постійно обходять інтернет у пошуках API-ключів, залишених у клієнтських бандлах, source map, які розкривають усе дерево вашого проєкту, незахищеної бізнес-логіки, яку конкурент може вивчити за одну годину. AI-моделі тепер можуть узагальнювати та пояснювати мініфікований код за лічені секунди, перетворюючи «безпеку через неясність» на повну відсутність безпеки.

Ми бачили AWS-ключі в продакшн-бандлах. [JWT](https://jwt.io/)-токени, жорстко закодовані в потоках автентифікації. Рядки підключення до баз даних, вбудовані в клієнтські конфігураційні файли. Повні source map, що розкривають оригінальні назви файлів, структури каталогів та коментарі, які ніколи не мали покидати сервер збірки.

Можливо, ви не знаєте, що це відбувається на вашому сайті. Ми створили інструмент, щоб ви могли це з'ясувати.

## Що перевіряє сканер

Сканер аналізує ваш сайт за сімома напрямками, кожен з яких виявляє конкретні знахідки з оцінкою серйозності. Ось що шукає кожен модуль — з прикладами реальних знахідок.

### Виявлення секретів

Сканує кожен JavaScript-файл та source map на предмет відкритих облікових даних — AWS access keys, секрети Stripe, токени [GitHub](https://github.com), URL-адреси баз даних, JWT та 18 інших типів шаблонів. Знахідки автоматично редагуються, тому ділитися результатами безпечно.

- **AWS Access Key Detected** (secrets, critical) — An AWS access key was found in the JavaScript bundle. Value: `AKIA...............7X9Q`. Found in: https://example.com/_next/static/chunks/app/page-a3f8.js
- **Stripe Secret Key** (secrets, high) — A Stripe API key was found in the JavaScript bundle. Value: `sk_live_51N...............8dFq`. Found in: https://example.com/assets/checkout-d41f.js
- **JWT Token** (secrets, high) — A JWT token was found hardcoded in the source. Value: `eyJh..........................E2MjN9`. Found in: https://example.com/static/js/auth-7cb2.js
- **Database Connection String** (secrets, critical) — A database URL was found in the JavaScript bundle. Value: `postgres://admin:...@db.internal:5432/prod`. Found in: sourcemap://src/lib/config.ts

### Рівень захисту

Класифікує кожен скрипт як обфускований, мініфікований, незахищений або з відкритим вихідним кодом. Якщо ваша збірка поставляє читабельний код з оригінальними назвами змінних, ви побачите це тут.

### Читабельність коду

Вимірює, наскільки легко AI може зрозуміти ваш код, оцінюючи щільність ключових слів, відкритість рядків, читабельність ідентифікаторів, структурну ясність та сигнали форматування. Високий показник читабельності означає, що ваша логіка — як відкрита книга.

### Небезпечні патерни

Виявляє використання [eval()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval), конструкторів `Function()`, `document.write()`, пряме присвоєння `innerHTML` та інші патерни, що розширюють поверхню атаки. Також виявляє публічно доступні source map та відкриті конфігураційні файли.

- **Source Map Publicly Accessible** (patterns, critical) — A source map file is publicly accessible, exposing original source code. Value: `https://example.com/assets/app.js.map`. Found in: https://example.com/assets/app-8f2a.js
- **eval() Usage Detected** (patterns, high) — Use of eval() allows arbitrary code execution. Value: `eval(atob(config.payload))`. Found in: https://example.com/static/js/main-3dc1.js
- **Exposed Configuration File** (patterns, critical) — A .env file is publicly accessible on the server. Value: `https://example.com/.env`. Found in: https://example.com/.env
- **innerHTML Assignment** (patterns, medium) — Direct innerHTML assignment can lead to XSS vulnerabilities. Value: `el.innerHTML = userContent`. Found in: https://example.com/static/js/render-f19a.js

### Визначення технологічного стеку

Ідентифікує фреймворки та бібліотеки — [React](https://react.dev), [Angular](https://angular.dev), [Vue](https://vuejs.org), [Next.js](https://nextjs.org), [jQuery](https://jquery.com) та інші — включаючи номери версій, де це можливо. Знати, що ви використовуєте — це перший крок; знати, що _всі інші_ можуть бачити, що ви використовуєте — це другий.

### Аналіз сторонніх ресурсів

Відображає кожен зовнішній домен, з якого ваш сайт завантажує ресурси — скрипти, шрифти, стилі, пікселі відстеження, API-ендпоінти. Кожен з них — це залежність, яку ви не писали і не можете контролювати.

### Склад бандлу

Виявляє вбудовані бібліотеки та перевіряє їх на відомі [CVE](https://cve.mitre.org). Якщо ви поставляєте версію jQuery або lodash з опублікованою вразливістю, сканер це позначить.

## Як це працює

Це не статичний аналізатор, який просто завантажує ваш HTML і на цьому зупиняється. Сканер використовує [Cloudflare Browser Rendering](https://developers.cloudflare.com/browser-rendering/) для завантаження вашого сайту в реальному браузері, виконання JavaScript та захоплення кожного ресурсу, що завантажується — включаючи динамічно вбудовані скрипти та бандли з відкладеним завантаженням.

Результати передаються в реальному часі через [SSE](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events). Ви побачите знахідки, як тільки кожен модуль завершить аналіз, з поточною оцінкою безпеки, яка прогресивно оновлюється від 0 до 100. Не потрібно чекати генерації повного звіту — ви спостерігаєте за скануванням наживо.

## Це безкоштовно. Без реєстрації.

Введіть URL. Отримайте результати. Ось і все.

Без облікового запису, без електронної пошти, без API-ключа. Сканер повністю безкоштовний. Ми створили його, бо вважаємо, що кожен розробник повинен мати можливість побачити, що розкриває його сайт — без зайвих перешкод.

## Або використовуйте CLI

Віддаєте перевагу терміналу? CLI [`afterpack`](https://www.npmjs.com/package/afterpack) включає той самий сканер — одна команда, без потреби у браузері. Вам знадобиться встановлений [Node.js](https://nodejs.org) (`npx` йде в комплекті):

```bash
npx afterpack audit https://example.com
```

```
  AfterPack v0.3.0 — Security Analyzer

  Scanning https://example.com ...

  ✓ Fetching page
  ✓ Rendering JavaScript
  ✓ Analyzing resources

  ⚠  CRITICAL: AWS Access Key Detected
  ⚠  HIGH: Source Map Publicly Accessible

  ┌─────────────────────────────────────────────┐
  │ Score: 38/100                                                          │
  │                                                                        │
  │ Resources      12 found (4 unprotected, 2 source exposed)              │
  │ Findings       7 issues (1 critical, 2 high, 4 medium)                 │
  │ Tech Stack     React, Next.js, Webpack                                 │
  │ Readability    74/100                                                  │
  └─────────────────────────────────────────────┘

  ⚠  1 critical finding:
     AWS Access Key Detected (AKIA...7X9Q in app/page-a3f8.js)

  Full report: https://afterpack.dev/security-scanner/abc123
```

Додайте його до CI або запускайте перед кожним деплоєм — виявляйте витоки секретів до того, як вони потраплять у продакшн.

## Скануйте свій сайт

Серйозно — [спробуйте](https://www.afterpack.dev/security-scanner) в браузері або запустіть `npx afterpack audit <your-url>` у терміналі. Перевірте вкладку секретів. Подивіться на рівні захисту. Побачте, скільки сторонніх доменів завантажують скрипти на ваших сторінках.

Якщо все виглядає чисто — чудово. Ви попереду більшості.

Якщо вам не подобається те, що ви бачите — саме для цього ми створили [AfterPack](https://afterpack.dev). Сканер показує проблему. AfterPack — це рішення для частини з вихідним кодом: він переписує ваш бандл так, що читати його, клонувати чи згодовувати моделі стає значно дорожче, ніж сьогодні. Пресет за замовчуванням робить бандл після gzip приблизно в 1,9–2,4 раза більшим; виміряні цифри — на [сторінці продуктивності](https://www.afterpack.dev/docs/performance).

---

Сканер вже працює на [afterpack.dev/security-scanner](https://www.afterpack.dev/security-scanner). Або запустіть `npx afterpack audit <url>` з будь-якого терміналу — він є на [npm](https://www.npmjs.com/package/afterpack).

Якщо ви хочете захистити те, що знаходить сканер, AfterPack уже працює: почніть з [короткого старту](https://www.afterpack.dev/docs/quickstart).

— [Nikita](https://nikitaeverywhere.com)
