【问题标题】:Raise exception on App Transport Security?引发应用程序传输安全异常?
【发布时间】:2016-01-04 17:59:00
【问题描述】:

在 iOS 9 下,我在这里使用了公认的答案:Transport security has blocked a cleartext HTTP

我将这些条目添加到 NSAppTransportSecurity 下的 Info.plist 文件中。我的应用程序似乎运行正常,并且执行了我所考虑的所有请求。我仍然收到错误:

App Transport Security 已阻止明文 HTTP (http://) 资源 加载,因为它不安全。可以通过以下方式配置临时异常 您应用的 Info.plist 文件。

我的问题是我无法在我的应用程序代码库中找到它的来源,并且我不想允许所有域(我在接受的答案中引用了惰性选项)。有没有办法为其引发异常以便我可以找到警告的来源?

【问题讨论】:

  • 不要关闭 ATS - 这是不好的做法。此外,您怎么可能从 Internet 加载资源而不知道加载它的内容?如果您正在使用其他人的代码(来自 Github 或提供的库)但不了解它的作用,那么您不应该使用该代码。话虽如此,您可以调试问题所在以及正在使用的 HTTP 请求(这应该将您指向问题库)。执行此操作的说明大约在页面的中间:timekl.com/blog/2015/08/21/…
  • 感谢您的回复。我不想关闭 ATS。这就是为什么我想提出一个异常,以便我可以找到有问题的代码行。而且我认为期望熟悉每个第三方库中的每一行代码是不合理的。同样,找到有问题的请求会让我更熟悉代码,我可以选择是否要继续使用它。
  • @ManuKanthan 您正在使用的网络诊断可能是了解哪些请求被阻止的最佳方式。它非常冗长,但很好。
  • 自从提出以来,Manu 似乎已经回答了实际问题:关闭 ATS 并不是自动的坏习惯。例如,您可能处于广告框架之类的位置,供应商通过该框架明确记录可能针对任何域发出的请求。如果您的用例是不可能提前知道您将访问的所有域,那么将其关闭是唯一合乎逻辑的方法。
  • 您可以尝试使用 charles 代理查看发出的请求,如果链接不多,则添加例外。

标签: ios objective-c xcode ios9 app-transport-security


【解决方案1】:

使用上述评论中的此链接 (http://timekl.com/blog/2015/08/21/shipping-an-app-with-app-transport-security/),我发现将环境变量 CFNETWORK_DIAGNOSTICS 切换为 1 会生成所有请求的详细日志。

这使我能够跟踪来自我正在加载自己的域的 webView 的请求,这反过来又加载了 MixPanel 和 Google Analytics 之类的东西。将这些域输入 Info.plist 文件可以解决问题,但是,我们只是要加载这些库的 https 版本。

【讨论】:

    【解决方案2】:

    使用 http 分析器,例如 Charles Proxy(30 天免费试用)来查找所有被调用的 URL。

    【讨论】:

    • 我建议使用 Websecurify 的“代理”。 Charles 是可用的最糟糕且无法正常运行的代理。它很昂贵,不可靠,而且用户界面看起来很糟糕。 “代理”确实工作得很好,有一些错误,但我更喜欢它而不是查尔斯。您也可以使用它进行请求操作。
    • 对成本的抱怨:如果我们想要好的工具,我们需要准备好为它们买单。在许多行业,例如建筑,尤其是维修(想想汽车),工人必须花费数千美元购买工具。我们被免费工具宠坏了,我们不愿意在工具上花费 50 美元,而这种行为降低了工具制造商恢复创建它们所花费的时间的能力,最终我们的工具变得很差。相比之下,硬件设计人员拥有复杂的工具,并且愿意为它们支付大量费用。我曾为价值数十亿美元的公司工作过,却不会花费 50 美元,这太可悲了。
    • 好的。 “昂贵的”。我不想为未针对 OS X 优化的基于 Java 的应用程序支付这个价格。我下载了它,花了大约 4 个小时的时间来发誓,直到我决定做出更好的东西。对我来说,Charles 工作并不可靠。
    • 用户体验非常糟糕,一切都看起来像窗户而不是梅西,表格视图有些自酿,没有结构化数据的解析/显示。
    • 是的 - 代理提供 HTTPS 检查和操作。它带有受信任的 CA,并将所有内容保存到钥匙串中。
    猜你喜欢
    • 2015-11-29
    • 2016-07-13
    • 2016-01-28
    • 2016-12-22
    • 2017-06-27
    • 2017-04-15
    • 2016-02-09
    • 2015-11-15
    相关资源
    最近更新 更多