睿诚科技协会

iOS为何重复提示允许访问网络连接网络连接网络?

iOS默认情况下会允许应用访问网络,但这种“允许”是有前提、有范围、并且用户可以精细化管理的。

ios允许访问网络连接网络连接网络
(图片来源网络,侵删)

下面我将为您详细解释iOS是如何管理应用网络访问的,以及相关的关键概念。


核心概念:App Transport Security (ATS)

iOS 9及更高版本引入了一项名为App Transport Security (ATS) 的安全功能,这是您问题的核心技术背景。

ATS的核心要求是:

  1. 强制使用HTTPS:所有应用发出的网络请求,默认都必须通过HTTPS协议进行。
  2. TLS最低版本:要求使用TLS 1.2或更高版本的加密协议来保障数据传输安全。

为什么这么做? HTTP协议是明文传输的,非常容易被中间人攻击者窃听或篡改,而HTTPS通过SSL/TLS证书对连接进行加密,可以有效防止数据泄露和篡改,保护用户的隐私和安全。

ios允许访问网络连接网络连接网络
(图片来源网络,侵删)

简单理解:

  • 旧时代(iOS 9之前):App发网络请求,就像寄一封没有封口的明信片,谁都能看。
  • 新时代(iOS 9及之后):苹果要求所有App发网络请求,都必须寄一封用保险箱锁好的信件(HTTPS),确保只有收件人能打开,并且信件内容不会被偷看或修改。

ATS的行为与例外情况

虽然ATS是默认开启的,但它并非一刀切,苹果也考虑到了一些特殊情况,并提供了例外机制。

默认行为(安全且严格)

  • App尝试连接到HTTP网站:请求会被拒绝,控制台会打印出类似App Transport Security has blocked a cleartext HTTP的错误信息。
  • App尝试连接到HTTPS网站,但服务器配置不合规:服务器使用的TLS版本太低,或者证书无效,请求同样会被拒绝

如何“允许”App访问非HTTPS网络?(开发者配置)

如果一个应用确实需要连接到一个不支持的、老旧的HTTP服务器,开发者可以在应用的配置文件(Info.plist)中进行声明,以绕过ATS的限制。

这是实现“允许访问”的关键步骤,但操作者是开发者,而非普通用户。

ios允许访问网络连接网络连接网络
(图片来源网络,侵删)

开发者需要在Info.plist文件中添加一个App Transport Security Settings字典,并在其中定义例外规则,常见的例外规则有:

  • 允许特定域名使用不安全的HTTP连接

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>your-old-server.com</key>
            <dict>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <!-- 可选:允许该域名下的子域名也使用HTTP -->
                <key>NSIncludesSubdomains</key>
                <true/>
                <!-- 可选:允许不验证域名的真实性(风险极高,不推荐) -->
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
                <key>NSExceptionMinimumTLSVersion</key>
                <string>TLSv1.0</string>
            </dict>
        </dict>
    </dict>

    注意:这是最后的手段,会降低应用的安全性,应尽量避免使用。

  • 全局允许所有HTTP连接(极不推荐,仅用于测试)

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

    这个设置会完全关闭ATS,让应用可以像旧时代一样自由连接任何HTTP服务器。苹果App Store审核会严格限制这种用法,通常只在开发调试阶段使用。


普通用户如何管理网络权限?

虽然普通用户不能直接修改ATS策略(那是开发者的工作),但iOS系统提供了其他方式让用户控制应用的网络访问,尤其是在个人热点蜂窝数据方面。

控制App使用蜂窝数据

这是用户最常接触的网络权限控制。

  • 路径设置 > 蜂窝网络(或“移动数据”)
  • 功能:在这个列表中,你可以看到所有安装的App,你可以为每个App单独设置是否允许在蜂窝数据网络下访问互联网。
  • 应用场景
    • 节省流量:关闭视频、游戏等高流量App的蜂窝数据权限。
    • 控制费用:防止某些App在后台偷偷消耗你的套餐流量。
    • 强制使用Wi-Fi:对于某些只支持Wi-Fi的App(如视频通话),可以关闭其蜂窝数据权限。

控制App使用个人热点

这个权限相对较少使用,但同样存在。

  • 路径设置 > 个人热点 > 关于个人热点
  • 功能:你可以选择“仅允许联系人加入”或“仅允许我的设备加入”,这间接控制了哪些App可以通过你的iPhone热点进行网络连接(因为App是在你的设备上运行的)。

问题方面 解释 谁来控制?
默认网络访问 允许,但强制要求使用HTTPS加密协议。 苹果(系统级)
访问不安全的HTTP 默认拒绝,开发者必须向苹果申请例外(在Info.plist中声明),且App Store审核会严格把关。 开发者(需苹果批准)
使用蜂窝数据 允许,但用户可以手动关闭单个App的蜂窝数据权限。 用户(在设置中管理)
使用Wi-Fi 允许,通常没有全局开关,由Wi-Fi网络本身和应用内设置决定。 用户(连接Wi-Fi)

当您说“iOS允许访问网络”时,可以理解为:

  1. 在安全的前提下(HTTPS),iOS允许App访问网络。
  2. 对于不安全的网络(HTTP),iOS默认禁止,除非开发者有特殊且合理的理由并获得系统许可。
  3. 用户拥有最终的控制权,可以决定哪些App在特定网络(如蜂窝数据)上“允许”或“禁止”访问。
分享:
扫描分享到社交APP