krt123456/saas-security-scan
GitHub: krt123456/saas-security-scan
一个零依赖的单文件 Python 工具,在企业安全审查或 SOC 2 评估前快速检查网站的外部安全基线问题。
Stars: 0 | Forks: 0
# saas-security-scan
**针对任何网站的快速、被动、零依赖的外部安全基线检查。**
在企业安全审查或 SOC 2 评估之前,在你自己的网站上运行它,可以发现审查人员总是会标记的简单问题——缺失的安全标头、脆弱的 cookie 标志、可伪造的电子邮件 (SPF/DMARC)、旧版 TLS、暴露的 `.git`/`.env`,以及意外发布在前端 JavaScript 中的机密信息。
```
$ python3 saas_security_scan.py example.com
saas-security-scan — example.com
risk score 11 (1 high / 2 medium / 0 low / 1 info)
[ HIGH ] Possible Stripe live key in public JavaScript
credential-shaped string served to every visitor
[MEDIUM] 4 security header(s) missing
missing: HSTS, Content-Security-Policy, X-Frame-Options, Permissions-Policy
[MEDIUM] DMARC missing
DMARC policy = absent
[ INFO ] No security.txt disclosure contact
GET /.well-known/security.txt != 200
```
## 为什么会有这个项目
大多数“安全扫描器”嘈杂、缓慢、需要注册账号,或者要求你安装一整套工具链。这是一个没有依赖(仅使用标准库)的单一 Python 文件,它只读取浏览器在一次页面加载中看到的内容——没有任何侵入性——并告诉你企业审查人员会在头五分钟内指出的安全基线问题。
它刻意保持保守:它只报告你可以在一次 `curl` 中自行验证的事实。没有误报,也没有为了显得忙碌而添加的“信息性”填充内容。
## 安装
无需安装。只需 Python 3.7+(以及用于 DNS 检查的 `dig`,这是 macOS/Linux 上的标准配置)。
```
curl -O https://raw.githubusercontent.com/krt123456/saas-security-scan/main/saas_security_scan.py
python3 saas_security_scan.py yourdomain.com
```
## 用法
```
python3 saas_security_scan.py yourdomain.com # human-readable report
python3 saas_security_scan.py yourdomain.com --json # machine-readable
```
当存在高严重性发现时,退出代码为非零,因此你可以将其放入 CI 中:
```
# .github/workflows/security-scan.yml
- run: python3 saas_security_scan.py ${{ vars.DOMAIN }}
```
## 检查内容
| 检查项 | 严重性 | 含义 |
|---|---|---|
| 缺失安全标头 | 中 | HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy |
| Cookie 标志 | 中 | 提供的会话 cookie 没有 `Secure` / `HttpOnly` |
| 公开 JS 中的机密信息 | 高 | AWS / Google / Stripe / GitHub / Slack / SendGrid 密钥、私钥块 |
| 旧版 TLS | 高 | 服务器仍在协商 TLS 1.0 / 1.1 |
| TLS 证书过期 | 中 | 证书将在 20 天内过期 |
| SPF / DMARC | 中 | 域名可能被伪造 / 钓鱼 |
| 暴露的文件 | 高 | `.git/config`, `.env`, `.git/HEAD` 被公开提供服务 |
| security.txt | 信息 | 无漏洞披露联系方式 |
## 不做的事情
这是一项被动的外部安全基线检查,而不是渗透测试。它无法发现在现代 SaaS 中实际上最关键的漏洞:
- 损坏的对象级授权 (BOLA / IDOR)
- 业务逻辑缺陷
- API 滥用链
- 登录背后的身份验证 / 会话弱点
这些需要由人类测试人员使用经过身份验证的访问权限进行测试。这是一种不同类型的工作——[以利用为导向的渗透测试](https://provecore.com),其中每一项发现都附带一个可用的概念验证。
## 许可证
MIT — 请参阅 [LICENSE](LICENSE)。可自由使用,包括商业用途。
由 **[Provecore](https://provecore.com)** 维护 — 专为准备进行企业交易和 SOC 2 审查的 B2B SaaS 团队提供渗透测试。
标签:Python, StruQ, Web安全, 动态分析, 安全基线检查, 安全扫描, 实时处理, 无后门, 时序注入, 蓝队分析, 逆向工具