← 评审入口PRD.md

VTY 品牌域名防护体系 · 产品需求文档(PRD)

字段内容
项目代号vty-domain-shield
归属VTY 体系 · 独立子项目(与前台站点、中控、操作文档解耦)
文档版本v1.0
状态待评审
适用角色产品 / 技术 / 运维 / 测试 / 风控
修订日期2026-08-26

0. 一页结论(评审先看)

要解决什么: 品牌域名(如 winbet.com)一旦直接挂站点内容,极易被举报、监控、扫描,导致品牌资产被污染或封禁。需要一套「品牌域零内容 + 双段跳转 + 动态分享 + 来源可统计」的长期可用方案。

怎么做(两段保护):

  1. 运维侧(第一段):品牌域名在边缘层做 纯 301,域名上 无任何业务内容、无 HTML、无静态资源
  2. 技术侧(第二段):用户落到「跳转入口 / 域名池」后,由系统 二次跳转到当前可用站点域名;分享域名 动态解析 当前已二次跳转后的站点域;品牌域进入流量 可埋点统计

最终目标: 品牌域名长期干净可续用;真实站点域名可轮换、可止血;分享链路永远指到「当前活站」;品牌引流可量化。


1. 需求背景

1.1 业务背景

- 扫描器、举报通道可直接抓到业务页面特征;

- 品牌域与站点域「同生共死」,品牌资产被牵连;

- 分享链接写死后,站点一换全线失效。

1.2 现状问题(假设痛点,评审可改)

问题影响
品牌域挂内容或被反代到站点易被扫描/举报;品牌域高风险
仅一次跳转、跳转目标写死站点域被封后入口全挂
分享链接写死站点域换域后历史分享全部失效
无法区分「是否从品牌域进来」投放/品牌效果无法统计
运维与技术职责混在一起出事后不清楚谁切 301、谁切域名池

1.3 为什么独立成项目


2. 目标与非目标

2.1 目标(Must)

  1. 品牌域名零内容:对外任何探测(GET/HEAD/爬虫)仅见跳转或空响应策略约定结果,不得出现业务页、登录页、活动页、接口文档、目录列表
  2. 两段保护可落地

- 运维侧:品牌域 → 跳转入口域(301,边缘完成);

- 技术侧:跳转入口 → 当前站点域(域名池二次跳转)。

  1. 最终站点域长期可用:通过域名池轮换、健康探测、一键摘除,保证用户可到达活站。
  2. 分享域名动态获取:分享侧不写死站点域,而是解析「当前二次跳转后的站点域」。
  3. 品牌来源可统计:凡经品牌域进入的会话,埋点可归因到具体品牌域(及可选投放参数)。
  4. 职责清晰:技术做什么、运维做什么、测试验什么,评审一眼能拆工单。

2.2 非目标(Out of Scope / 本期不做)

2.3 成功标准(可量化)

指标目标
品牌域内容探测自动化扫描 0 命中业务特征页(见测试章)
站点域故障切换摘除故障域后,新用户 ≤ 1 分钟内落到新活站(配置 TTL 内)
分享解析正确率≥ 99.9% 返回「当前主站域」
品牌归因覆盖率品牌域 hop 进入会话,埋点带 brand_domain ≥ 99%
角色 Runbook封禁/攻击场景,技术与运维各有可执行步骤

3. 术语与域名分层

评审约定:下文用「角色名」称呼域名类型,落地时由配置中心登记真实 FQDN。
角色示例(虚构)是否允许业务内容职责摘要
品牌域 Brandwinbet.com / www.winbet.com禁止对外品牌入口;仅运维边缘 301
跳转入口域 Entrygo-xx.net 等入口池仅允许「跳转页/接口」,禁止完整站点技术二次跳转与风控入口
站点域 Siteplay-a.com 等站点池允许完整业务真实产品承载
分享域 Shares-xx.com仅短链/解析跳转动态给出当前 Site
埋点/采集域 Trackt-xx.com 或走站点同源采集仅采集接口统计品牌来源等
管理域 Admin内网或独立管理域管理后台域名池/开关/审计(不对公品牌域暴露)

3.1 核心原则

  1. 品牌域永不托管业务内容(含错误页定制文案、品牌落地页、JS SDK 大包)。
  2. 站点域可牺牲、可轮换;品牌域尽量不动、不暴露。
  3. 分享永远解析「当前 Site」,不解析「历史 Site」。
  4. 归因凭证在第一跳生成、第二跳透传、落地核销,防止凭空刷量。

4. 总体方案(架构)

4.1 双段跳转主路径

用户点击物料 / 输入品牌域
        │
        ▼
┌───────────────────────────────┐
│ ① 运维侧 · 品牌域边缘         │
│ DNS → CDN/LB                  │
│ 仅返回 HTTP 301               │
│ Location: https://{Entry}/... │
│ 无 Body / 无业务资源          │
└───────────────┬───────────────┘
                │
                ▼
┌───────────────────────────────┐
│ ② 技术侧 · 域名池二次跳转     │
│ Entry 校验 + 风控 + 选活站    │
│ 302/307 → https://{Site}/...  │
│ 写入 hop 凭证 & 埋点          │
└───────────────┬───────────────┘
                │
                ▼
        用户进入当前可用站点

4.2 分享路径

用户打开分享链接 https://{Share}/{code}
        │
        ▼
Share 服务查询「当前主 Site」(与 Entry 二次跳转同一数据源)
        │
        ▼
302/307 → https://{Site}/...  (可带分享归因,不一定带品牌归因)

4.3 关键数据流(品牌进入)

  1. 运维 301 的 Location 必须带 可校验的 hop 参数(或固定 path 映射到品牌 ID),例如:

https://entry.example/r/{brandId}?sig=...&ts=...

  1. Entry 校验签名/时效 → 生成 hop_id → 二次跳到 Site,URL 或 Cookie/Local 凭证携带 brand_domain / brand_id
  2. Site 首屏或网关上报:entry_type=brandbrand_domainhop_id、UA、落地 path。
  3. 统计侧去重(同一 hop_id 只计一次有效进入)。

5. 运维要做什么(Ops)

本章是运维实施与值班的「做什么」;验收标准见第 9 章。

5.1 职责清单

编号事项说明
O-1品牌域 DNS仅指向「纯跳转边缘」;禁止指向站点源站 / 对象存储站点桶
O-2边缘 301 规则全路径强制 HTTPS;统一 301 到 Entry;禁止 200 业务页
O-3证书与 TLS品牌域证书有效;建议 HSTS(评审决定是否 preload)
O-4空内容硬化关闭目录索引、默认欢迎页、探针页、Server 指纹过度暴露
O-5WAF/ACL 基线品牌域仅允许必要方法(建议仅 GET/HEAD);限制异常扫描
O-6监控告警品牌域出现非 301、出现 Body、证书到期、解析漂移
O-7变更与审计任何品牌域 Location 变更走工单;保留变更记录
O-8封禁应急品牌域被污染时的「只保留跳转 / 切备用 Entry」SOP

5.2 品牌域「零内容」强制规范

允许:

禁止:

探测判定(运维自检):

curl -sI https://winbet.com/
# 期望:HTTP/2 301(或 308)
# 期望:Location 指向 Entry
# 期望:无业务 Set-Cookie(若必须 Cookie,需评审例外)
curl -sL --max-redirs 0 https://winbet.com/ | wc -c
# 期望:Body 为空或仅边缘默认极短响应(以规范为准,推荐空)

5.3 运维侧防封策略

策略做法
品牌与站点隔离品牌域永不解析到 Site IP/源站
多 Entry 热备301 目标可在多个 Entry 间切换(配置中心 + 边缘规则)
低暴露面品牌域不提供 API、不提供 robots 业务说明、不提供 sitemap 业务 URL
注册商/DNS 分散品牌域 DNS 与站点域 DNS 供应商可分离,降低连带
证书独立品牌域证书不与站点域乱配 SAN 混用(避免证书透明度关联过度)
变更冷静期Location 变更灰度 + 回滚开关

5.4 运维侧防攻击策略

策略做法
方法限制仅 GET/HEAD;拒绝 POST/PUT 等
速率限制对品牌域做连接/请求速率限制,防扫库式探测
WAF 基础规则拦截常见漏洞探测路径(即便会 301,也减少边缘开销)
Bot 管理(可选)对高频扫描 UA/IP 挑战或丢弃
DDoS 防护品牌域接入边缘清洗;攻击时保「跳转可用」优先于「开放探测」
日志脱敏品牌域访问日志保留状态码/Location/IP 哈希;不落业务数据

5.5 运维交付物

  1. 《品牌域接入清单》模板(域名、DNS、证书、301 Location、负责人)
  2. 边缘配置样例(Nginx / CDN Rule,评审选用)
  3. 监控看板:301 占比、非 301 告警、证书到期、解析一致性
  4. 应急 Runbook:品牌域异常 / Entry 不可用 / 证书失败

6. 技术要做什么(Tech)

本章是研发与架构的「做什么」;接口以逻辑契约描述,实现可选 Worker/网关/BFF。

6.1 职责清单

编号事项说明
T-1域名池服务维护 Entry / Site / Share 池状态:启用、权重、健康、主备
T-2二次跳转Entry 根据策略选出当前 Site,302/307 跳转
T-3分享解析Share 动态返回/跳转到「当前二次跳转所用的 Site」
T-4品牌归因校验运维 hop → 生成 hop_id → 落地埋点
T-5配置中心/管理端域名上下线、主站切换、审计日志(管理域)
T-6健康探测对 Site/Entry 主动探测;不健康自动摘除
T-7防刷与风控跳转接口防伪造、防重放、防批量撞库式跳转
T-8观测跳转成功率、池容量、归因成功率、分享解析延迟

6.2 域名池模型(逻辑)

Site 记录字段(最小集):

字段说明
domainFQDN
statusactive / standby / disabled / blocked
weight流量权重
is_primary是否当前主站(分享解析默认读主站)
health最近探测结果
tags地区/线路等
updated_at / operator审计

规则:

6.3 二次跳转(Entry)行为

  1. 接收来自品牌域 301 的请求(带 brandId/sig/ts 或等价映射)。
  2. 校验:签名、时效、品牌是否启用。
  3. 风控:IP/UA/频率;可疑可降级到验证页(验证页只在 Entry,不在品牌域)。
  4. 选择 Site:primary 优先,否则按权重从 healthy 集合选取。
  5. 签发 hop_id(一次性或短TTL)。
  6. 302/307 到 https://{site}/?_hop=... 或 Set-Cookie(需 Secure/HttpOnly/SameSite 评审)。
  7. 异步记:跳转成功日志(品牌、Entry、Site、耗时)。

失败降级:

6.4 分享域动态获取

产品要求: 分享域名不固化站点域;任何时刻解析结果 = 「当前域名池二次跳转会落到的站点域」。

推荐接口(逻辑):

- 鉴权:服务端密钥 / 边缘 mTLS / 签名(不对公匿名滥刷)

- 返回:{ "site": "play-a.com", "https": true, "version": "..." }

- 302 到 https://{currentSite}/... + 分享归因参数

客户端/投放侧规范:

6.5 埋点监控(品牌来源)

必须上报字段:

字段说明
entry_typebrand / share / direct / other
brand_domainwinbet.com(仅 brand 有)
brand_id配置中心 ID
hop_id去重与稽核
entry_domain实际 Entry
site_domain实际落地 Site
landing_path落地路径
ts / ua / ip_hash基础维度

统计口径:

6.6 技术侧防封策略

策略做法
站点池容量维持 N 个可切 Site(容量指标进 SLO)
自动摘除健康检查失败自动 disabled,告警人工复核
主站秒切管理端一键切换 is_primary,Entry/Share 同步
入口池多个 Entry,品牌 301 可切备用 Entry(与运维联动)
特征收敛Entry 页极简,减少可指纹业务特征
配置下发边缘/节点短 TTL 拉取池状态,避免长缓存指到死域

6.7 技术侧防攻击策略

策略做法
跳转参数签名HMAC + 时间窗,防伪造品牌归因
防重放hop_id 一次性核销或短 TTL
Resolve 鉴权分享解析接口防未授权批量拉取池信息
速率限制Entry/Share/Track 分层限流
信息隐藏错误响应不返回完整域名池列表
WAF/BotEntry/Share 接入防护;管理 API 独立网络策略
审计所有域名状态变更、主站切换写审计日志

6.8 技术交付物

  1. 域名池服务 + 管理 API 说明
  2. Entry 二次跳转时序与状态码规范
  3. Share Resolve 契约与 SDK/调用示例
  4. 埋点字典与数仓字段对齐表
  5. 技术应急 Runbook:Site 全挂 / 归因刷量 / 解析被刷

7. 技术 × 运维协作接口(必须对齐)

接口点运维提供技术提供共同约定
品牌 → Entry301 Location 模板Entry path/签名算法Location 必须可归因到 brand
Entry 切换改边缘 LocationEntry 池健康与容量RTO:×× 分钟
Site 被封DNS/CDN 侧可协助摘除解析池状态切换主站技术主责切换,运维协助清理
证书品牌/Entry/Share 证书Site 证书(或共同)到期日历共享
攻击边缘清洗、封禁 IP应用限流、签名失效联合演练
监控边缘状态码、带宽跳转成功率、池健康统一告警升级路径

变更原则:


8. 关键场景与时序

8.1 品牌域首次进入

  1. 用户访问 https://winbet.com/
  2. 边缘 301 → https://{entry}/r/winbet?sig=...&ts=...
  3. Entry 校验通过,选主站 play-a.com,生成 hop_id
  4. 302 → https://play-a.com/?_hop=...
  5. 站点核销 _hop,上报 entry_type=brand, brand_domain=winbet.com

8.2 站点域被封后的用户路径

  1. 技术将 play-a.comblockedplay-b.com 升主站
  2. 品牌域 不改(仍 301 到 Entry)
  3. 新用户经 Entry 自动到 play-b.com
  4. 分享 Resolve 同步返回 play-b.com
  5. 运维可选:清理 play-a.com 解析/缓存(协助)

8.3 分享链接

  1. 代理复制链接 → 后台调 Resolve → 得到当前 Site 或得到 Share 短链
  2. 用户打开 Share 短链 → 302 当前 Site
  3. 埋点 entry_type=share(若该分享由品牌活动生成,可另有 campaign_id,与品牌 hop 区分)

9. 测试要做什么(QA)——评审可直接拆用例

9.1 品牌域零内容(P0)

用例步骤期望
TC-B1HEAD/GET 品牌根路径301/308,Location 到 Entry
TC-B2GET 品牌随机路径 /login /promo仍 301 到 Entry(或统一策略),不得 200 业务页
TC-B3下载 Body无业务 HTML 特征(无标题/表单/钱包文案等)
TC-B4常见扫描路径不暴露源站指纹与业务资源
TC-B5HTTP→HTTPS强制跳转安全

9.2 双段跳转(P0)

用例步骤期望
TC-J1完整跟随跳转(限制人工检查两跳)第一跳运维 301,第二跳技术 302/307 到 Site
TC-J2伪造签名访问 Entry拒绝,不进入 Site
TC-J3过期 ts拒绝
TC-J4主站切换后立即访问品牌域落到新主站(在 TTL 内)

9.3 分享动态解析(P0)

用例步骤期望
TC-S1Resolve 当前 Site与 Entry 决策一致
TC-S2切换主站后再 Resolve返回新主站
TC-S3无鉴权滥刷 Resolve被拒绝或限流
TC-S4旧分享短链仍跳到「当前」Site,而非创建时的旧 Site

9.4 埋点归因(P0)

用例步骤期望
TC-T1品牌进入事件含 entry_type=brand + brand_domain + hop_id
TC-T2同一 hop_id 重复上报有效进入只计 1
TC-T3直连 Site不得被记为品牌进入
TC-T4分享进入entry_type=share,不与品牌混淆

9.5 防封/防攻(P1)

用例步骤期望
TC-F1标记 Site blocked流量不再分配到该域
TC-F2Entry 限流超阈返回保护性响应
TC-F3品牌域只允许 GET/HEADPOST 被拒
TC-F4管理 API 公网不可未授权访问

9.6 验收签字栏(评审用)

角色验收焦点签字
运维品牌域零内容 + 301 + 监控
技术域名池 + 二次跳转 + 分享 + 埋点
测试P0 用例全过
产品目标与口径确认

10. 监控、告警与值班

10.1 运维监控

10.2 技术监控

10.3 升级路径

  1. Site 单点故障 → 技术切主站
  2. Entry 故障 → 运维切品牌 301 到备用 Entry + 技术修 Entry
  3. 品牌域被投诉/污染 → 运维保零内容与跳转;技术评估是否轮换 Entry;尽量不把业务搬回品牌域

11. 分期建议(便于排期)

Phase 1(MVP)

Phase 2

Phase 3


12. 风险与开放问题(评审必答)

编号问题建议决策人
Q1品牌域 301 是否允许带 path 透传?产品+技术
Q2hop 凭证用 URL 参数还是 Cookie?技术+安全
Q3HSTS preload 是否对品牌域启用?运维+安全
Q4分享解析 TTL 与客户端缓存上限?技术+运营
Q5品牌进入与付费归因窗口(7 日?)数据+产品
Q6Entry 是否允许极简人机验证页?风控+产品

13. 附录

A. 角色 RACI(摘要)

事项产品技术运维测试
品牌零内容标准CCA/RR
301 配置CCA/RR
域名池与二次跳转CA/RCR
分享动态解析CA/RIR
埋点口径ARIR
防封演练CRRR
防攻击演练CRRR

B. 示例:边缘 301(示意,非生产配置)

# 品牌域 server:只跳转,不提供内容
server {
  listen 443 ssl http2;
  server_name winbet.com www.winbet.com;
  # ssl_certificate ...;

  location / {
    return 301 https://entry.example/r/winbet?ts=$msec&sig=...;
  }
}
生产签名应由边缘函数或统一网关生成,避免在配置文件写死可伪造参数。

C. 文档维护


文档结束。