移动端 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个主要步骤:
开通 HTTPDNS 服务
添加域名到解析列表
获取解析 IP
应用解析结果到网络库
接入成功验证
开通 HTTPDNS 服务
在 EMAS控制台 开通 HTTPDNS 服务。服务开通后系统会分配必要的账号凭证,用于后续客户端 SDK 的初始化配置。
添加域名到解析列表
根据业务使用的 OSS 访问方式,在 EMAS 控制台添加对应的域名到解析域名列表。
使用 OSS 标准 Endpoint 的应用
建议添加泛域名
*.aliyuncs.com
。这种配置方式能够覆盖所有阿里云地域的 OSS 服务域名,简化管理流程。如果需要添加特定的 OSS 域名白名单,需要按以下步骤操作:查看 OSS地域和访问域名找到对应的 Endpoint 指向的域名。必须添加
<Bucket>.<Endpoint>
和<Endpoint>
两种域名,因为这两个域名会同时被 OSS SDK 访问。例如:bucket.oss-cn-hangzhou.aliyuncs.com
和oss-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 结果的情形,特别适用于复杂网络环境的验证需求。