- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
据我所知,2017 年 Apple 将拒绝所有在 Info.plist
中启用了 Allow Arbitrary Loads
的应用:
另请参阅:https://nabla-c0d3.github.io/blog/2016/08/14/ats-enforced-2017/
我们的应用程序正在控制用户家中的智能设备。这就是说,我们不是在与互联网交谈,而只是通过 HTTP 与 LAN 设备交谈。所有这些设备都不支持 HTTPS。我们应该如何配置这些应用程序传输安全设置
而不让我们的应用程序被 Apple 拒绝?
编辑: Apple has delayed the SSL/ATS requirement to after 1/1/2017
最佳答案
澄清一下,Apple 将拒绝使用 ATS 异常(exception)的应用,以禁用 2016 年 12 月 31 日之后提交的应用的 ATS,除非有正当理由说明应用必须使用该异常(exception)。我们只是不知道 Apple 会接受什么理由。
很遗憾,在 iOS 9 中本地网络资源被 ATS 阻塞的问题没有很好的解决方案。据我所知,您有 2 个选择。
继续支持iOS 9,并添加全局ATS异常(exception),希望在2016年12月31日之后提交应用时,Apple会接受你支持iOS 9和访问本地网络的理由禁用 ATS 的资源。在 2017 年 1 月 1 日之前,很难知道 Apple 认为哪些类型的理由是合理的,但 Apple 明确表示将有一个流程来证明应用程序使用 ATS 异常(exception)。如果你走这条路,我会尝试在 1 月初对应用程序进行小更新,ATS 异常仍然存在,看看你是否可以完成这个过程。
放弃对 iOS 9 的支持,删除全面的 ATS 异常 (NSAllowArbitratyLoads
),并使用 NSAllowsLocalNetworking
异常来关闭仅在本地网络上的 ATS 保护交通。这在 iOS9 上不受支持,因此您需要让新应用程序仅限 iOS 10。基本上,仅将 NSAllowsLocalNetworking
plist 条目设置为 true 的 iOS9 设备上的本地流量将被 ATS 阻止。根据您的客户群,这可能是可行的。 iOS 9 用户仍然可以在您的 iOS 10 发布之前获得该应用程序的最新版本。
编辑:
所以看起来 Apple 在 iOS 10 中使用了一些自定义行为来让 iOS 10 上的应用程序更加安全,同时允许在 iOS 9 中向后兼容。如果你同时包含 NSAllowsArbitraryLoads
和NSAllowsLocalNetworking
在您的 info.plist 中,iOS9 将只识别 NSAllowsArbitraryLoads
条目,并允许所有流量(从安全角度来看不是很好,但适用于您的本地网络流量) .在 iOS 10 中,使用 NSAllowsLocalNetworking
将导致 iOS 10 忽略 NSAllowsArbitraryLoads
条目,这意味着您的应用将确保对非本地连接强制执行 ATS,但允许要通过的本地连接。显然,您应该在 iOS 9 和 10 上测试您的应用程序,但如果您仍然需要支持 iOS 9,从安全的角度来看,这将是理想的选择。重要的是要注意,您仍然需要向 Apple 提供理由,但考虑到Apple 将此功能用于处理这种确切情况,我愿意打赌向后兼容性将是一个可接受的理由。
来自 Apple 的 documentation :
In iOS 10 and later, and macOS 10.12 and later, the value of this key is ignored if any of the following keys are present in your app’s Info.plist file:
NSAllowsArbitraryLoadsForMedia
NSAllowsArbitraryLoadsInWebContent
NSAllowsLocalNetworking
关于ios - 2017年,关于ATS设置,我们应该如何处理没有HTTPS的局域网请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41101931/
关闭。这个问题不符合 Stack Overflow guidelines 。它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 Stack Overflow 的 on-topic。 4年前关闭。
假设我有一个列表 xs。如何在 ATS 中编写以下循环样式: foreach x in xs do process(x) 最佳答案 您可以使用旧的 DIY 风格(也:经典的 ATS 风格),也就是说,
在开头加上:从 ATS 网站学习 ATS。 尝试从列表中提取记录时,一旦我尝试引用记录变量,就会在下面的 x4.a 上收到类型错误。 那么为什么会失败 - x4 不知道它有记录吗? typedef a
我知道可以使用 libc/math 中的 sqrt 函数来完成它: staload Math = "libats/libc/SATS/math.sats" val sqrt2 = $Math.sqrt
我可以像堆栈一样使用列表,但是在 ATS 中创建队列的正确方法是什么?例如,假设我有以下伪代码: val xs = queue_create() val () = xs.enqueue(1) val
例如,如何在 ATS 中构造一个数组,其中包含从 A 到 Z 的所有大写字母?在 C 中,这可以按如下方式完成: char *Letters() { int i; char *cs = (
例如,我正在 ATS 中寻找一个示例,该示例或多或少地执行以下 C 代码的功能: int *theMultable[10][10]; void theMultable_initialize() {
例如,如何构造一个包含所有数字的列表:0、1、2、3、4、5、6、7、8 和 9。 最佳答案 您可以使用 val xs = ($list {int} (0, 1, 2, 3, 4, 5, 6, 7,
基本上,我正在寻找或多或少相当于以下 C 代码的东西: int theGlobalCount = 0; int theGlobalCount_get() { return theGlobalCount
假设我想对列表中的整数求和。我可以通过在列表上应用初始值为 0 的 reduce 运算符和加法函数来做到这一点。 ATS中reduce算子叫什么名字? 最佳答案 “reduce”这个名字有点含糊。它可
这里有两段代码我认为是等效的,除了第二段的行数比它应该多: fun move_ul {i:nat} ( p: int(i) , ms: list0(Int) ): list0(Int) = if
我经常在 ATS 中看到使用 case、case+ 或 case- 形成的 case 表达式。有什么区别? 最佳答案 如果表达式不详尽,使用 case 会发出警告,case+ 会产生错误,而 case
我知道如何使用 patsopt 和 atscc2js 将 ATS 代码编译成 JS 代码: patsopt -d foo.dats | atscc2js -o foo_dats.js 我是否需要为 a
例如,如何在 ATS 中编写 x 的 10 次幂的表达式?我尝试了 x^10 和 x^^10,但都没有奏效。 最佳答案 ATS 中整数和浮点值的取幂运算符是 ** ,如 implement main0
当使用像 list_map 这样的高阶函数时,需要构建闭包函数并将它们作为参数传递。之后,构建的闭包就变成了垃圾。有没有办法在调用堆栈上构建这样的闭包函数(以便在调用后自动释放它们)? 最佳答案 正如
main0 函数的类型是什么? 我正在编写 gtk3 库。但是 g_application_run() 函数需要 argv。当然,ATS语言可以在main0函数上使用argv。但是类型是什么? 最佳答
有时,我会看到如下代码: var foo = lam@(x: int): int => ... lam@ 是什么意思? lam 和 lam@ 有什么区别? 最佳答案 在内存方面,lam 创建一个盒装闭
这是日期格式化程序设置: let dateFormatter = DateFormatter() dateFormatter.dateStyle = .medium dateFormatter.tim
我想得到下面的结果但不使用 at语法,因为它在 Safari 中不受支持,我很难使用它。有谁知道任何方法?先感谢您! #content { background-color: black; h
也许我可以使用这样的脚本文件: 现在在 -f script_file 但是如何将参数分配给脚本。 最佳答案 at 没有 -f 开关。你可以像下面这样使用它: echo "sh script.sh" |
我是一名优秀的程序员,十分优秀!