通过阿里云 HTTPDNS 访问 OSS

移动端 OSS SDK 集成 EMAS HTTPDNS 替换传统 Local DNS 解析机制,消除域名劫持风险并提升 OSS 访问性能。

方案概览

移动应用使用阿里云 OSS SDK 时依赖传统 Local DNS 进行域名解析,面临以下核心问题:

  • 域名劫持风险:传统 DNS 采用明文传输,攻击者可篡改响应将请求重定向至恶意服务器

  • 解析不稳定:DNS 故障、响应缓慢或调度不精准,导致 OSS 操作失败或耗时增加

为应对这些挑战,推荐将 OSS SDK 接入 EMAS HTTPDNS。HTTPDNS 是一种端侧 DNS 解决方案,可替代传统 Local DNS,避免出现域名劫持、解析延迟、失败率高以及调度不精准等问题,为移动终端提供更稳定、更快速、更安全的解析能力。接入 EMAS HTTPDNS 总共包括以下5个主要步骤:

  1. 开通 HTTPDNS 服务

  2. 添加域名到解析列表

  3. 获取解析 IP

  4. 应用解析结果到网络库

  5. 接入成功验证

开通 HTTPDNS 服务

EMAS控制台 开通 HTTPDNS 服务。服务开通后系统会分配必要的账号凭证,用于后续客户端 SDK 的初始化配置。

添加域名到解析列表

根据业务使用的 OSS 访问方式,在 EMAS 控制台添加对应的域名到解析域名列表。

  • 使用 OSS 标准 Endpoint 的应用

    建议添加泛域名 *.aliyuncs.com。这种配置方式能够覆盖所有阿里云地域的 OSS 服务域名,简化管理流程。

    如果需要添加特定的 OSS 域名白名单,需要按以下步骤操作:查看 OSS地域和访问域名找到对应的 Endpoint 指向的域名。必须添加 <Bucket>.<Endpoint><Endpoint> 两种域名,因为这两个域名会同时被 OSS SDK 访问。例如:bucket.oss-cn-hangzhou.aliyuncs.comoss-cn-hangzhou.aliyuncs.com

  • 使用自定义域名的应用

    添加 OSS Bucket 绑定的自定义域名。

获取解析 IP 地址

EMAS HTTPDNS 提供两种集成方式来获取域名解析结果。

  • SDK(推荐)

    SDK接入封装了与服务端的交互复杂度、缓存管理及高可用能力,适合快速接入和完整功能需求的场景。

  • HTTP API

    HTTP API接入支持自定义协议和轻量级集成,适合环境受限或需要高度定制控制的场景,并可扩展 SDNS 及额外错误码等能力。

应用解析结果到网络库

获取解析 IP 后,需要将该 IP 应用到网络请求的 DNS 解析环节。应用方案取决于 OSS 使用的网络库是否支持自定义 DNS 解析。网络库提供 DNS Hook 或域名映射接口时,可直接注入解析结果;否则需通过 IP 直连、协议替换或本地代理等方式进行适配。不同移动平台的 EMAS HTTPDNS 与 OSS SDK 适配方案如下:

接入成功验证

客户端接入 EMAS HTTPDNS 后,建议通过以下两种方式验证集成是否成功。

  • 日志验证(推荐)

    在客户端埋点打印从 EMAS HTTPDNS API 获取的解析 IP 列表和实际业务请求的发起情况。该验证方式实现简单、轻量级,适合绝大多数应用场景。通过日志可以确认 HTTPDNS 解析是否正常工作,以及网络请求是否使用了解析得到的 IP 地址。

  • 抓包验证

    使用 tcpdump、Wireshark、Charles 等工具抓包,确认业务请求的目标 IP 与 EMAS HTTPDNS 返回的结果一致,且未额外发起系统 DNS 查询。该验证方式更加准确,能排除未应用到 HTTPDNS 结果的情形,特别适用于复杂网络环境的验证需求。