簡體   English   中英

通用鏈接是否緩存在 iOS 中? 他們離線工作嗎?

[英]Are Universal Links cached in iOS? Do they work offline?

我通過打開飛行模式在 iOS 中測試了通用鏈接,並看到打開了正確的應用程序(而不是網站)

這表示某種程度的“緩存” apple-app-site-association

我想確定緩存的程度,以便我可以確定

  • 有哪些 UX 邊緣情況(例如離線 x 天)
  • 有哪些安全注意事項(例如 MITM / SSLStrip + .well-known/URL)

等等。

理想情況下,如果使用附加邏輯,我想了解詳細信息(如果使用 HTTPS,則使用條件緩存,DNSSec 等)

Apple 不清楚這里的確切行為(故意?)。 這是我的個人經驗,部分來自官方文檔,部分來自幫助數千個應用程序在Branch.io實現通用鏈接。

  • 首次安裝應用程序時, apple-app-site-association文件會緩存一次
  • 如果此初始刮擦失敗,則幾乎在所有情況下都不會重新嘗試。 唯一的例外是如果初始返回是 5xx 錯誤,在這種情況下可能會發生有限次數的重試。 這沒有得到很好的記錄,並且根本沒有包含在 Universal Links 文檔中。 您可以在Shared Web Credentials 文檔 中找到提及。
  • 打開通用鏈接時根本不會檢查該文件。 這就是您能夠在飛行模式下獲得通用鏈接行為的原因。
  • 該文件不會過期。 緩存后,只要安裝了應用程序,它就會永久保留。
  • 安裝應用程序更新時將重新檢查該文件。
  • 該文件必須可通過https://example.com/apple-app-site-associationhttps://example.com/.well-known/apple-app-site-association上的有效 SSL 連接訪問。 如果有任何類型的重定向,這將失敗。
  • 如果您能夠直接在相關設備上安裝新的 SSL 證書,則理論上可以對請求進行 MITM。 例如, Charles Proxy使用這種方法進行調試。 我從未見過或聽說過這種情況被利用,而且損害將非常有限,因為仍然必須在應用程序內部指定域。

我找到了解決緩存問題的方法。 緩存綁定到域名,因此每次您希望 iOS 請求apple-app-site-association您都可以創建一個新的子域,並將 iOS 配置為使用該子域作為您的應用程序的通用鏈接。

非常hacky,但這是唯一對我有用的解決方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM