我通过打开飞行模式在iOS中测试了通用链接,发现打开了正确的应用程序(而不是网站)
这表示“缓存” apple-app-site-association
的某种级别。
我想确定它的缓存程度,因此我可以确定
存在哪些UX边缘情况(例如,离线x天)存在哪些安全注意事项(例如MITM / SSLStrip + .well-known / URL)
等等
理想情况下,如果要使用其他逻辑,我想提供详细信息(如果使用HTTPS,DNSSec等,则进行条件缓存) Apple尚不清楚(故意吗?)确切的行为。这是我的个人经验,部分来自官方文档,另一部分来自于帮助成千上万的应用程序在Branch.io上实现通用链接。
首次安装该应用程序时,apple-app-site-association
文件被缓存一次。 如果此初始抓取失败,则几乎在所有情况下都不会重新尝试它。唯一的例外是,如果初始返回是5xx错误,则在这种情况下可能会发生有限的重试次数。这没有充分的文档记录,并且根本没有在通用链接文档中进行介绍。您可以在Shared Web Credentials docs中找到提及。 打开通用链接时,根本不会检查该文件。这就是为什么您可以在飞行模式下获得Universal Links行为的原因。 文件不会过期。缓存后,只要安装了该应用程序,它就会永久粘贴。 安装应用程序更新时将重新检查该文件。 必须通过有效的SSL连接https://example.com/apple-app-site-association
或https://example.com/.well-known/apple-app-site-association
可以访问该文件。如果有任何重定向,则将失败。 从理论上讲,如果您能够直接在相关设备上安装新的SSL证书,则可以对请求进行TMTM。例如,Charles Proxy使用此方法进行调试。我从未见过或听说过有人利用此漏洞,而且由于仍然必须在应用程序内部指定域,因此损害将非常有限。