Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 同时支持http呼叫和ATS_Ios_App Transport Security - Fatal编程技术网

Ios 同时支持http呼叫和ATS

Ios 同时支持http呼叫和ATS,ios,app-transport-security,Ios,App Transport Security,我正在使用一个应用程序,用户可以在其中输入任意URL,我的应用程序可以连接到该URL。目标服务器可以是http或https。我在我的应用程序info.plist中添加了以下值 <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> NSAppTransportSecuri

我正在使用一个应用程序,用户可以在其中输入任意URL,我的应用程序可以连接到该URL。目标服务器可以是http或https。我在我的应用程序info.plist中添加了以下值

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads
由于以上配置,http调用和安全服务器工作正常,即使缺少任何安全服务器要求,如TLS1.2、前向保密等

我想确保我的安全服务器满足iOS文档中提到的所有要求,即TLS1.2,转发保密,如果我的安全服务器上缺少任何内容,我的请求将失败。如果我的服务器未正确配置SSL要求(TLS1.2,前向保密),我将使用以下配置并请求失败

NSAppTransportSecurity
NSAllowsArbitraryLoads
使用上述配置后,我无法连接http服务器。如果安全服务器配置不正确,是否有任何方法可以连接http服务器并请求失败


注意:我的应用程序可以连接到用户输入的任何服务器。我无法使用NSExceptionDomains配置来指定服务器。

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>
NSAppTransportSecurity
NSAllowsArbitraryLoads
NSExceptionDomains
example.com
n包括多个域
N异常低安全Http负载
NSExceptionMinimumTLSVersion
TLSv1.2
NSExceptionRequiresForwardSecretary

谢谢您的回复。假设有n个服务器,我事先不知道域名。稍后将添加新服务器。上述方案只有在我知道服务器地址的情况下才有效。唯一的方法是在代码中实现ATS检查,同时关闭iOS提供的现成ATS检查。那么,应用程序如何知道是否实施ATS,以及何时忽略任何错误?从服务器源下载的域列表?你不能既有蛋糕又有蛋糕。
<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>