接口该开放哪些读能力,文档列表和联系方式算不算敏感
对外接口该开放哪些读能力,文档列表和联系方式算不算敏感数据——这两问要分开答:文档列表本就公开,可以放;联系方式虽然也显示在页面上,但属于要单独评估的高敏感读项。判断依据不是「页面上能不能看到」,而是「按接口方式批量取走之后会怎样」。页面一次只给一个人看一条联系方式,接口一次可以返回整站联系方式清单,读取成本与外泄面完全变了。按暴露范围分层设计读能力,接口才不会变成数据导出通道。
先按本来就公开与否分层
AnQiCMS 常被接口调用的高频能力包括文档列表与详情、分类与标签、上传图片、留言与评论、友情链接、系统设置与联系方式。这些能力不在同一个敏感级上,分层之后各层的开放策略不同。
| 读能力 | 数据可见性 | 批量取走的风险 | 建议开放方式 |
|---|---|---|---|
| 文档列表与详情 | 页面本就公开 | 内容被整站采集 | 可开放,配限流与采集防护 |
| 分类与标签 | 页面本就公开 | 结构被完整复制 | 可开放 |
| 上传图片 | 正文引用即公开 | 素材被批量下载、流量被消耗 | 按目录限定,避免全量列举 |
| 留言与评论 | 展示于页面 | 用户昵称与内容被聚合 | 只返回已通过审核的部分 |
| 友情链接 | 页面公开 | 合作方信息被整理走 | 可开放 |
| 联系方式 | 页面公开单条 | 汇总成可营销的联系人清单 | 按需返回,不做全量列表 |
| 系统设置 | 不公开 | 暴露站点配置与开关状态 | 默认不开放 |
读能力里哪几类要单独评估
联系方式与系统设置这两类最需要单独判断。联系方式被汇总之后就是可用的营销名单,也是钓鱼与电话骚扰的素材,接口侧更稳妥的做法是按单页或按栏目返回,不提供一次取全站的列表形态。系统设置属于另一类问题:它暴露的是站点的运行状态与开关,读到它就等于读到攻击面的地图,默认不开放。
留言与评论要区分「展示已通过审核的」和「包含待审的」。后者包含用户提交的原文与联系方式,任何情况下都不该出现在对外读接口里。上传图片同理,能按具体路径取即可,不要提供遍历目录的能力。
接口文档该写清什么
接口文档里每一个读能力要说明四件事:需不需要鉴权、返回哪些字段、频率限制、以及哪些字段仅在管理身份下返回。文档写不清这三层,接入方就会按最宽的方式调用,风险由站点承担。
鉴权部分要写清令牌如何传递、失效后怎么刷新;字段部分要写清哪些字段可能为空而不是省略;限流部分给出实际约束而不是「视情况」。接口帮助里把公开能力与需授权能力分成两张清单,比一张长表更好用,接入方一眼能判断自己要走哪条路径。
写操作与全站级操作的暴露范围
读能力之外更要控制的是操作范围。MCP 接口按意图域设置暴露范围,备份、升级、多站点这类全站级操作属于高危域,默认关闭,需要显式开启。多站点管理下这条尤其重要:一次配置错误不只影响一个站点,而是同批站点一起受影响。把高危域留在默认关闭状态,只按业务需要逐个打开,比事后回滚便宜得多。
写操作还要配回合级确认:批量写入合并成一次审批,让调用方看清这一批会改哪些对象,避免一次误调用改完全部文档。对外开放的读接口不触发这类风险,但一旦把写能力也放出去,审批与范围控制就要一起到位。
常见问题
文档列表能公开,为什么还要限流? 公开的是单页内容,被高频批量调用就变成整站采集。限流与防采集的干扰码配合,能保证正常接入不受影响,同时抬高整站搬走的成本。
联系方式接口只给管理员用太严格吗? 不一定。按页面返回是常见需求,关键是不提供「一次取全部」的形态,业务需要完整清单时走后台导出并留记录。
高危域默认关闭会不会影响正常集成? 只影响需要这些操作的集成。需要时显式开启对应意图域,比为了省事把全部能力打开更容易核对谁在用。
接口文档要写到多细? 写到接入方不必追问为止:鉴权方式、字段含义、空值行为、频率限制、错误返回形态,五项齐了才算可用。