首页 文章

iOS9:.plist框架内的App Transport Security

提问于
浏览
0

我创建了一个使用NSURLSessionDataTask(HTTP)向服务器发送请求的框架,但每当我在示例应用程序中使用Framework时,它都会显示如下警告:

App Transport Security已阻止明文HTTP(http://)资源加载,因为它不安全 . 可以通过应用程序的Info.plist文件配置临时例外 .

我试图在Framework .plist中添加App Transport Security但仍然无效 . 但是,当我在Framework外部的.plist中添加App Transport Security时,它可以工作 .

这个问题有什么解决方案吗?谢谢

3 回答

  • 0

    正如@EmilioPelaez所说,该应用程序控制ATS是否处于活动状态 . 如果您的框架执行违反ATS规则的操作,则使用该框架的每个应用程序都需要添加相应的异常 .

    这种行为有充分的理由 . 例如,采用通用网络助手框架,其中URL由调用应用程序提供给框架调用 . 该框架无法知道它是否需要ATS . 相反,如果框架中包含需要ATS异常的硬编码URL,则调用应用程序开发人员应该意识到这一点,并且不应该被框架开发人员添加异常的表面所掩盖 . 作为开发人员,我想知道我使用的是一个本质上不安全的框架 . 如果您正在处理后一种情况,只需在框架文档中输入框架正常运行所需的异常 .

    此外,作为ATS的最佳实践, don't just disable it altogether ,通过仅禁用特定域的ATS要求的某些部分,可以使用特定的例外来最小化您的安全风险 . 一定要这样做 . 此外,了解Apple计划在2016年底要求许多ATS例外的理由,但目前已被推迟 . 如果您添加例外,您应该准备好在某个时候,当您将应用程序提交到App Store时,Apple会要求您提供原因 . 它可能不应该是"because stack overflow told me to disable all ATS" .

  • 0

    该框架无法控制ATS,应用程序也是如此 . 所以你必须在你的文档中写下来,app开发人员需要在他的应用程序中添加ATS例外 .

    那就是说,不要这样做 . 特别是如果你正在制作一个框架 . 花时间并向服务器添加HTTPS支持/联系服务器开发人员以添加它 . 因为Apple很快就会停止支持AllowArbitraryLoads / exception . 因此,如果没有提供他们为什么需要这些例外的正当理由,那么包含您的框架的应用将无法完成审核流程 . Apple最初计划从2017年1月1日开始放弃支持,但他们推迟了一段时间 . 不过,他们有一天会这样做 . 计划未来会更好 .

    附:如果您完全无法控制服务器,并且服务器开发人员在Mars上,并且您的框架确实需要与该服务器通信,那么应用程序开发人员可能会通过解释情况来通过审核(“无法控制服务器“是Apple Review团队的正当理由”,但是他们每个人都必须一遍又一遍地执行此操作,并且您必须在文档中解释如何执行此操作以及说些什么 . 因此,切换到HTTPS更容易 .

  • -1

    enter image description here
    在info.plist中添加NSAllowsArbitraryLoads作为true键以避免此问题 .

相关问题