【问题标题】:How to block all HTTP urls in iOS Application如何阻止 iOS 应用程序中的所有 HTTP url
【发布时间】:2019-04-08 21:55:43
【问题描述】:

我搜索并找到了许多链接,这些链接告诉使用 Plist 文件中的传输安全性阻止 HTTP 和某些特定域或允许特定域 比如Transport security has blocked a cleartext HTTPApplication Transport Security。 我在我的 plist 中使用了以下内容

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
</dict>

我的应用程序使用 API 并在视图上显示数据,在我的应用程序中有一个页面,我在其中设置了服务器 url,例如 https://liveserver.comhttp://localserver.com,但是当我设置 url http://localserver.com 时它仍然有效。而且它仍然适用于 true 价值。请给我建议如何阻止所有 HTTP url,并且应用程序仅适用于 HTTPS。

谢谢

【问题讨论】:

  • 尝试删除密钥NSAllowsArbitraryLoads
  • @Aleem “用户可以设置像google.com 这样的域”是什么意思?这些链接是否在您的应用中并在浏览器或 web 视图中打开?
  • Google.com 只是一个例子。实际上,我的应用程序正在使用我们的本地服务器的 API,例如 http:/localServer.com 和一个实时服务器,例如 https:/liveServer.com
  • 您如何访问相关域? SFSafariViewController? UIWeb 视图? NSURLConnection?
  • @Aleem 您需要提供有关您如何尝试连接到上述域的详细信息。 ATS 仅适用于某些场景。例如,如果您在 SFSafariViewController 中执行此操作,则您的 ATS 设置将不适用,因为 SFSafariViewController 是与您的应用程序分开的沙盒。

标签: ios xcode app-transport-security


【解决方案1】:

尝试:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>domain.com</key>
        <dict>
            <!--Include to allow subdomains-->
            <key>NSIncludesSubdomains</key>
            <true/>
            <!--Include to allow HTTP requests-->
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <!--Include to specify minimum TLS version-->
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>
    </dict>
</dict>

对于阻止所有 HTTP 尝试

<key>NSAppTransportSecurity</key>
  <dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
    <key>NSExceptionDomains</key>
    <dict>
     <key>*</key>
    <dict>
        <key>NSExceptionAllowsInsecureHTTPLoads</key>
        <false/>
    </dict>
  </dict>
 </dict>

【讨论】:

  • 我不想提及“domain.com”,我只是想禁止所有 HTTP 并允许所有带有 HTTPS 的 url
  • 对于阻止所有 HTTP 尝试:无效!!它仍然允许ping
  • ping 未使用 http 连接。它使用自己的协议和自己的端口。您如何尝试连接到这些域?如果你想知道如何做你所问的问题,请看我上面的问题。
猜你喜欢
  • 2011-11-11
  • 1970-01-01
  • 1970-01-01
  • 2020-02-13
  • 1970-01-01
  • 2013-09-11
  • 2023-02-13
  • 1970-01-01
  • 2012-07-12
相关资源
最近更新 更多