我正在工作一个应用程序,用户可以输入任意的URL,我的应用程序可以连接。目标服务器可以是http或https。我在我的应用程序info.plist中添加了以下值。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>由于以上配置,即使缺少任何安全服务器要求,如TLS1.2、前向保密等,http调用和安全服务器仍能正常工作。
我希望确保我的安全服务器满足iOS文档中提到的所有要求,即TLS1.2,向前保密,如果我的安全服务器上缺少任何内容,我的请求将失败。如果我的服务器没有正确配置SSL需求(TLS1.2,前向保密),我已经使用了以下配置,请求失败。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
</dict>在使用上述配置后,我无法与http服务器连接。如果没有正确配置安全服务器,我是否可以连接http服务器并请求失败。
注意:我的应用程序可以连接到用户输入的任何服务器。我不能使用NSExceptionDomains配置来指定服务器。
发布于 2016-10-20 13:44:52
NSExceptionDomains不仅允许在某些域上设置不太安全的设置,还可以将其用于相反的情况,例如默认情况下允许任意加载,然后添加需要更安全设置的异常:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>example.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<false/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
</dict>
</dict>
</dict>https://stackoverflow.com/questions/40155863
复制相似问题