Universal Links是否在iOS中缓存?他们离线工作吗?

goo*_*ate 3 security https ios applinks ios-universal-links

我通过启用Airplane模式在iOS中测试了Universal Links,并看到正确的应用程序已打开(而不是网站)

这表明某种程度的"缓存"了apple-app-site-association.

我想确定缓存它的程度,所以我可以确定

  • 哪些UX边缘案例(例如离线x天)
  • 有什么安全考虑因素(例如MITM/SSLStrip + .well-known/URL)

等等

理想情况下,如果使用其他逻辑,我希望获得详细信息(如果使用HTTPS,则使用条件缓存,DNSSec等)

Ale*_*uer 15

Apple的确切行为(故意?)不清楚.以下是我的个人经历,部分来自官方文档,部分来自帮助数千个应用程序在Branch.io实施Universal Links .

  • apple-app-site-association文件被缓存首次安装应用程序时.
  • 如果这个初始刮擦失败,几乎在所有情况下都不会重新尝试.唯一的例外是如果初始返回是5xx错误,在这种情况下可能会发生有限次数的重试.这没有详细记录,并且根本不包含在Universal Links文档中.您可以在Shared Web Credentials文档中找到提及.
  • 打开通用链接时,根本不检查该文件.这就是您能够在飞行模式下获得通用链接行为的原因.
  • 该文件不会过期.缓存后,只要安装了应用程序,它就会永久保留.
  • 安装应用更新时将重新检查该文件.
  • 该文件必须通过有效的SSL连接访问在任https://example.com/apple-app-site-associationhttps://example.com/.well-known/apple-app-site-association.如果存在任何类型的重定向,则会失败.
  • 如果您能够直接在相关设备上安装新的SSL证书,理论上可以对请求进行MITM.例如,Charles Proxy使用这种方法进行调试.我从未见过或听说过这种被利用,并且损坏将非常有限,因为仍然必须在应用程序内部指定域.