You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否可以限制iOS应用仅与白名单域名进行通信?

可行性结论

该需求完全可通过ATS原生能力实现,若需要精确到路径级的访问限制,额外增加一层网络请求拦截即可。

配置步骤

要实现仅白名单域名可访问的效果,按照如下规则配置项目的Info.plist即可:

  • 首先新增NSAppTransportSecurity(类型为Dictionary)作为根键
  • 在NSAppTransportSecurity下新增NSAllowsArbitraryLoads(类型为Boolean),值设为false。该配置代表默认禁止所有非白名单域名的请求,同时要求所有请求默认满足ATS基础安全要求(TLS 1.2及以上、证书链合法等)
  • 在NSAppTransportSecurity下新增NSExceptionDomains(类型为Dictionary),字典内的每一个键对应你要放行的白名单域名:
    • 若要同时放行域名的所有子域名,在对应域名的配置字典中新增NSIncludesSubdomains(类型为Boolean),值设为true
    • 若白名单域名不符合ATS基础安全要求(比如用了低版本TLS、需要支持HTTP请求),可按需添加对应例外配置调整规则

以下是对应需求的配置源码示例:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>bank.com</key>
        <dict>
            <!-- 放行bank.com的所有子域名,不需要的话可以删掉这个配置 -->
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

注意事项

  • ATS仅能管控App通过URLSession、WebKit等上层系统网络API发起的请求,如果你使用了BSD套接字、第三方原生C/C++网络库等底层接口发起请求,ATS无法拦截,需要自行在业务层做白名单校验
  • ATS的白名单仅支持域名粒度的管控,无法直接限制特定路径。如果你需要仅允许访问https://bank.com/api下的接口、禁止同域名其他路径的请求,可以在网络请求发起前做统一拦截,校验URL路径前缀是否符合要求,不符合则直接终止请求
  • 白名单支持通配符配置,比如*.bank.com可以匹配所有bank.com的二级子域名

内容的提问来源于stack exchange,提问作者Taylor Kline

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 17:48:00