一次看清四处攻击面:仓库里的明文凭据(含 git 历史)、线上证书、安全响应头、依赖漏洞。 结果按「能不能立刻被利用」排序,不是按字母排序。
# 扫当前仓库(连 git 历史一起),再体检线上站点 npx surfacecheck . --url https://example.com # 只扫线上,不碰本地代码 npx surfacecheck --url example.com # CI 里用:有「严重」就以退出码 1 失败 npx surfacecheck . --json --fail-on critical
泄露最常发生的位置不是当前代码,而是三年前那个已经删掉的 commit。只扫工作区等于给自己发一张假的安全证明。
报告本身不能变成新的泄露源。输出只保留前 4 位和长度——够你定位是哪把 key,不够别人拿去用。
查 OSV 需要读锁文件、发网络请求,浏览器做不到。命令行里 surfacecheck . 会自动带上。
不写死「30 天内过期」。Let's Encrypt 2027 年起有效期缩到 64 天,按固定天数写的告警要么太晚,要么一直在响。