# 推出 AfterPack 网站安全扫描器

一款免费工具，精确展示您的网站暴露了什么——泄露的密钥、未受保护的源代码等。几秒钟即可扫描任何网站。

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

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

今天我们正式推出 [AfterPack 网站安全扫描器](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 访问密钥、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

更喜欢终端？[`afterpack`](https://www.npmjs.com/package/afterpack) CLI 包含同样的扫描器——一条命令，无需浏览器。您需要安装 [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)
