JoshuaMart/WebSec0
GitHub: JoshuaMart/WebSec0
WebSec0 是一个可自托管的被动式 Web 安全配置扫描器,检测 TLS 配置与 HTTP 安全头并生成含可复制修复建议的实操报告。
Stars: 0 | Forks: 0

# WebSec0
**WebSec0** 是一个开源、可自托管的**被动式** Web 安全
配置扫描器。在一个约 15 MB 的单一二进制文件中,它会检查主机的 TLS
配置和 HTTP 安全头,运行一些自定义检查
(`security.txt`、`robots.txt`、……),并生成**包含可直接复制粘贴的修复代码片段且具有实操性的报告**。
为**两类地位平等的用户群体**而构建:
- 人类 — 清晰的报告,按 ROI(安全收益 ÷ 工作量)排定优先级
- AI agent — 每个发现都是自包含的(无需外部获取),
catalog 通过 `GET /api/v1/checks` 暴露,并附带了一个开箱即用的
[`SKILL.md`](./skills/websec0/SKILL.md)
## 试用
**托管实例:** [www.websec0.com](https://www.websec0.com) — 无需注册,
无需密钥,完全公开。
或直接调用 API:
```
curl -sS -X POST https://www.websec0.com/api/v1/scan \
-H 'Content-Type: application/json' \
-d '{"host":"github.com"}' | jq .
```
完整的请求/响应契约、错误封装和评分模型都
记录在 [`SKILL.md`](./skills/websec0/SKILL.md) 中 — 专为 AI agent 编写,
但也易于人类阅读。
## 自托管
拉取并运行已发布的跨架构镜像。默认配置开箱即用:
```
docker run --rm -p 8080:8080 ghcr.io/joshuamart/websec0:latest
```
打开 。这个无发行版(distroless)镜像大小约为 15 MB,并以
非 root 用户身份运行。要覆盖默认配置(监听地址、速率限制、SSRF
策略、历史记录保留时间),请挂载一个配置文件:
```
docker run --rm -p 8080:8080 \
-v "$(pwd)/websec0.yaml":/etc/websec0/websec0.yaml:ro \
ghcr.io/joshuamart/websec0:latest \
--config /etc/websec0/websec0.yaml
```
使用 [`websec0.yaml.example`](./websec0.yaml.example) 作为起点 —
每个字段都有详细注释。
## 工作原理
```
flowchart LR
User[Web UI · curl · agent] -->|POST /api/v1/scan| API[chi router + rate limit]
API --> SSRF[safehttp gate
IP pin · no private · no rebind] SSRF --> Orch[Scanner orchestrator] Orch --> TLS[TLS probe] Orch --> HDR[Headers probe] Orch --> Custom[Custom checks] TLS --> Score[Scoring] HDR --> Score Score --> Result["scan.Result
(2 grades + findings)"] Custom --> Result Result --> User ``` 每个出站请求都会经过 **`safehttp`** 处理:每个目标在 DNS 解析时都会被固定到 单个 IP,RFC 1918 / loopback / link-local 地址将被一律拒绝,并且连接会根据主机进行速率限制。 随后,探测任务并行展开 — 通常一次扫描可以在 ~10 秒内完成。 ## 贡献 请参阅 [`CONTRIBUTING.md`](./CONTRIBUTING.md) 了解开发工作流以及 “添加检查”的三种方式。安全报告请通过 [`SECURITY.md`](./SECURITY.md) 中记录的私密渠道提交。 集成 WebSec0 的 AI agent 应该从 [`skills/websec0/SKILL.md`](./skills/websec0/SKILL.md) 开始。 ## 许可证 代码采用 [MIT](./LICENSE) 许可证。由公开实例生成的报告 遵循 [Creative Commons BY 4.0](https://creativecommons.org/licenses/by/4.0/) 许可协议发布。
自行构建镜像
该仓库提供了两个 Dockerfile。`Dockerfile` 在 Docker 内部构建 Go,这也是 `make docker` 所调用的脚本;`Dockerfile.goreleaser` 是发布流水线使用的最小化纯拷贝运行时。 ``` docker build -t websec0 . docker run --rm -p 8080:8080 websec0 ```从源码构建
需要 Go 1.26+、Node 22+、pnpm 10+ 和 rsync。 ``` make frontend-install make build ./dist/websec0 ``` `make build` 将内嵌的 Astro bundle 声明为 Make 的先决条件, 因此,只有当 `web/` 下的文件发生更改时,它才会重新构建前端 (并使用 rsync 将其同步到 `internal/frontend/dist/`, 也就是 `//go:embed` 提取它的地方)。 纯粹针对 Go 的迭代构建不会产生任何前端开销。IP pin · no private · no rebind] SSRF --> Orch[Scanner orchestrator] Orch --> TLS[TLS probe] Orch --> HDR[Headers probe] Orch --> Custom[Custom checks] TLS --> Score[Scoring] HDR --> Score Score --> Result["scan.Result
(2 grades + findings)"] Custom --> Result Result --> User ``` 每个出站请求都会经过 **`safehttp`** 处理:每个目标在 DNS 解析时都会被固定到 单个 IP,RFC 1918 / loopback / link-local 地址将被一律拒绝,并且连接会根据主机进行速率限制。 随后,探测任务并行展开 — 通常一次扫描可以在 ~10 秒内完成。 ## 贡献 请参阅 [`CONTRIBUTING.md`](./CONTRIBUTING.md) 了解开发工作流以及 “添加检查”的三种方式。安全报告请通过 [`SECURITY.md`](./SECURITY.md) 中记录的私密渠道提交。 集成 WebSec0 的 AI agent 应该从 [`skills/websec0/SKILL.md`](./skills/websec0/SKILL.md) 开始。 ## 许可证 代码采用 [MIT](./LICENSE) 许可证。由公开实例生成的报告 遵循 [Creative Commons BY 4.0](https://creativecommons.org/licenses/by/4.0/) 许可协议发布。
标签:Docker, EVTX分析, Go, HTTP安全头, Ruby工具, Snort++, TLS配置检测, Web安全, 安全防御评估, 实时处理, 日志审计, 蓝队分析, 被动扫描, 请求拦截