强制执行 iOS 应用程序传输安全性

Posted

技术标签:

【中文标题】强制执行 iOS 应用程序传输安全性【英文标题】:Enforcing iOS App transport security 【发布时间】:2017-12-29 12:20:53 【问题描述】:

ios 9 及更高版本开始,Apple 已强制用户出于安全目的向特定主机发出 HTTPS 请求,或者如果必须发出 HTTP 请求,Apple 希望用户在 plist 中提供相同的例外情况。

类似:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>api.themoviedb.org</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

但是,如果我从 plist 中删除此代码,并在设备 (iOS 11) 上运行我的代码,它仍然会正确加载 HTTP 请求,而不会发出任何警告。

问题是,如果 Apple 强制使用 HTTPS,为什么我能够在没有任何警告的情况下进行 HTTP 调用?

【问题讨论】:

【参考方案1】:

根据@KrauseFX 最近的推特对话,似乎没有 https://twitter.com/KrauseFx/status/942741438890233856

我想分享

【讨论】:

好吧,看起来他们强制执行了这个,有些东西坏了,然后他们决定恢复执行规则(根据twitter.com/Javi/status/942805306781810688)。谢谢。

以上是关于强制执行 iOS 应用程序传输安全性的主要内容,如果未能解决你的问题,请参考以下文章

HTTPS执行流程解析

iphone/ipad : 如何通过 iOS 应用程序执行 Apple 安全策略?

如何为网站启用HTTPS加密传输协议

应用传输安全问题 iOS9

iOS 程序猿们要知道的一些 HTTPS 的事情...

未强制执行 Java 安全策略