标准答案
- 常见入口包括 URL 预览、图片抓取、Webhook 回调、文件导入、OAuth 元数据、代理转发和用户配置的第三方地址。
- 优先使用服务端维护的目标白名单或预注册连接器,而不是接受任意 URL;需要动态 URL 时也应限制协议、端口、域名和路径规则。
- 解析域名后要校验最终 IP,拒绝回环、私网、链路本地、云元数据地址和其他保留网段;重定向后的每一跳都要重新校验。
- 网络层应通过 egress 防火墙、代理和服务账户权限限制服务能访问的网段和端口,不能只依赖应用层字符串判断。
- 外部请求要设置连接和读取超时、响应大小上限、DNS 解析策略和审计日志,避免 SSRF 同时变成端口扫描或资源耗尽工具。
题目解析
只检查 URL 是否以 https 开头不够。域名可以解析到内网地址,重定向可以跳到内部地址,DNS 还可能在校验后发生重绑定。
不同服务的网络权限不同。只需要访问支付网关的服务不应拥有访问所有内部管理端口和云元数据的能力。
常见误区
- 只用正则判断 URL 格式,不校验实际解析地址和重定向。
- 允许任意协议、端口或 file、gopher 等非 HTTP 协议。
- 把云元数据、管理面和内部服务放在可被业务服务任意访问的网络中。