在早些时候,每当我想要检索数据时,都不需要在NSAppTransportSecurity
中添加NSAllowsArbitraryLoads
将YES
密钥设置为info.plist
,但现在,如果您是要通过网络运行你的应用程序,然后必须添加它。
为什么需要它?它有用吗?它的用途是什么?
任何人都可以帮忙吗?
答案 0 :(得分:7)
App Transport Security 作为附加安全功能。
来自Apple的文档:
App Transport Security是一项可以提高安全性的功能 应用程序和Web服务之间的连接。该功能包括 符合最佳实践的默认连接要求 安全连接。应用可以覆盖此默认行为并转向 运输安全。
其中一个要求是所有连接都必须使用 HTTPS 。这就是为什么所有仅使用HTTP的连接都会在iOS9上失败。
如果您使用的服务不是通过HTTPS提供的,您仍然可以通过覆盖App Transport Security来使用它。这就是NSAppTransportSecurity
文件中的Info.plist
字典的用途。在那里,您可以定义要覆盖的App Transport Security要求。
例如,NSAllowsArbitraryLoads
会禁用任何域的所有安全要求。您可以在NSExceptionDomains
字典中定义例外,但如果不这样做,将允许所有域在没有App Transport Security的情况下连接到您的应用。
如果要连接到不使用HTTPS的单个域,则不应使用NSAllowsArbitraryLoads
,因为这会禁用所有 所有域的安全性。相反,您应该专门覆盖此一个域的HTTPS要求。
您可以在Info.plist
文件中执行此操作:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourdomain.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
总结一下:App Transport Security是一件好事,因为它鼓励您使用比普通HTTP连接更安全的HTTPS连接。因为您不能总是使用HTTPS,所以它为您提供了允许不安全连接的机会。最好只在您需要的地方使用这些安全覆盖。