未经同意,绝不扫描

详细使用手册

本窗口在获得同意的前提下检查你已部署的 Web 应用。下面按步骤说明从申请到凭证的全过程。

手册 · 目录

1. 申请检查

输入要检查的 Web 应用域名和接收结果的邮箱,点击“申请检查”。系统会签发一个只绑定该请求的唯一令牌。此时尚未进行任何扫描。

2. 证明掌控权(关键步骤)

把签发的令牌放到你的域名上以证明所有权。两种方法任选其一。能把它放在那里,本身就是证明。

A

方式 A · 文件

用屏幕上的“复制”按钮复制令牌。

在域名根目录创建 /.well-known/star365-audit-consent.txt 文件,内容仅为该令牌。

在浏览器打开该 URL 时能原样看到令牌,即已就绪。

B

方式 B · DNS TXT

在 DNS 选项卡用“复制”按钮复制那一行记录。

在你的 DNS 中添加为 TXT 记录:名称 star365-audit-consent,值为该令牌。

DNS 传播可能需要几分钟到几十分钟。生效后再验证。

C

方法 C · meta 标签

如果静态托管无法提供文件路径,或网站对任何地址都返回 200(soft-404),请使用此方法。从 meta 标签页复制标签,放进首页 HTML 的 <head> 中。

标签必须出现在服务器返回的 HTML 中 — 之后由 JS 插入的标签我们看不到。<head> 之外(正文中)的标签不算数:在原样渲染帖子的网站上,别人可能植入标签来伪造同意。

两行可选内容 — 与令牌一起写进同意文件(或 TXT / meta 值)。contact=you@example.com:若要在域名以外的地址(如 Gmail)收到凭证邮件则需要(申请时填写邮箱会自动预填)。badge=on:公开检查徽章(默认关闭)。
🔴 我们在扫描前会再次验证同意。若你中途删除令牌(撤回),则不会检查。

3. 验证后执行检查

点击“确认同意”,服务器会读取令牌位置进行验证。验证通过后,仅该域名进入白名单和检查队列。外部检查只使用只读 GET 请求——无注入、无暴力破解、无过载。 只有一个例外:如果被检测的前端包里带有 Supabase 项目地址(*.supabase.co)和 anon 密钥,我们会向该项目主机发送只读 GET,检查 RLS 是否开启。仅限包中已调用的表名,每张表 1 条,且不读取也不保存行的值。

4. 阅读凭证

检查完成后你会通过邮件收到凭证。每一项的判定为三种值之一(失败项附带严重度),并以防篡改哈希链保存:

通过 通过 — 该项未发现问题。
失败 失败 — 发现问题,并附严重度:注意(建议修复,如未设置安全响应头)或危险(立即处理,如暴露密钥、开放数据库)。
无法确认 无法确认 — 我们读不到的项。绝不伪装成通过,如实标注。

检查什么

外部检查(仅需同意)

从外部用 GET 可观测的 20 项:可达性 · 打包进浏览器的密钥 · 开放的敏感路径(.env、.git 等 27 种)· 安全响应头。以及只有用真实浏览器打开才会暴露的部分——JS 控制台报错、自家资源返回 4xx/5xx、HTTPS 页面请求 http:// 资源(混合内容)、是否部署成了白屏、390px 移动端横向溢出、失效的站内链接。浏览器只发 GET——即便页面自己发起 POST,也不会经由我们发出。外部看不到的,一律记为“无法确认”。 使用 Supabase 的应用还会检测 RLS(当包中带有 anon 密钥时)。

内部检查 · SSH(另行请求)

仅在明确请求并授予访问权限时:文件权限、数据库暴露与防火墙、进程运行权限、依赖漏洞。发现的敏感值只保留指纹,不保存原文。

安全与隐私

我们只检查已证明同意的域名。结果只交给你,绝不发布。我们不收取任何资金或支付方式;捐赠直接进入钱包。

检查徽章(可选)

检查完成后,你可以在网站上挂一枚“star365 已检查”徽章。徽章只有在你开启时才会显示——请在同意文件(或 TXT 记录)里,与令牌一起加一行 badge=on。未开启时徽章地址返回 404,连“做过检查”这一事实都不会暴露。只有真正拿到凭证的域名才有徽章(无法伪造),失败数量绝不公开。把下面代码中的域名换成你的即可:

<a href="https://audit.star365.site/?ref=badge"><img src="https://audit.star365.site/badge/YOUR-DOMAIN.svg" alt="Security audited by star365"></a>

在 CI 中每次部署都检查

只需人工做一次:下面的命令会输出同意文件内容和凭证密钥。把文件内容(包括最后的 standing=on 行)上传到网站,并把输出的 NONCE、RECEIPT_KEY 存为 CI 机密。

curl -fsSLO https://audit.star365.site/ci/star365-audit.sh && bash star365-audit.sh request YOUR-DOMAIN you@example.com

然后在部署流水线中加一步(GitHub Actions 示例 — 把 action.yml 和 star365-audit.sh 一起放进仓库;其他 CI 运行 bash star365-audit.sh rescan):

- uses: ./.github/actions/star365-audit   # action.yml + star365-audit.sh
  with:
    nonce: ${{ secrets.STAR365_NONCE }}
    receipt-key: ${{ secrets.STAR365_RECEIPT_KEY }}
    fail-on: crit

退出码:0 通过 · 1 失败(默认仅「危险」级算失败;fail-on: warn 时「注意」也算)· 2 无法判定(等待超时、无同意)。同一域名每小时最多检查一次。要停止重复检查,请从同意文件删除 standing=on 行 — 下一次请求起即被拒绝。

问题排查

出现“未找到令牌”

检查文件 URL 是否准确(拼写、大小写),内容是否仅为令牌。若用 DNS,请等待传播完成后再次点击“确认同意”。

“无法确认”算失败吗?

不。它表示我们读不到该项;我们不把它伪装成通过,而是如实告知。如需要,可通过源码位置或 SSH 内部检查来确认。

检查何时执行?

同意验证通过后即进入自动队列,很快执行,完成后通过邮件发送凭证。

费用

外部检查免费。SSH 内部检查与持续监测按范围经沟通后进行。若有帮助,欢迎自愿(非托管)捐赠。

← 返回首页 / 申请检查