iOS Universal Links

Support HackTricks

Introduzione

I link universali offrono un'esperienza di reindirizzamento senza soluzione di continuità agli utenti aprendo direttamente il contenuto nell'app, bypassando la necessità di un reindirizzamento su Safari. Questi link sono unici e sicuri, poiché non possono essere rivendicati da altre app. Questo è garantito ospitando un file JSON apple-app-site-association nella directory radice del sito web, stabilendo un collegamento verificabile tra il sito web e l'app. Nei casi in cui l'app non sia installata, Safari prenderà il controllo e dirigerà l'utente alla pagina web, mantenendo la presenza dell'app.

Per i tester di penetrazione, il file apple-app-site-association è di particolare interesse poiché potrebbe rivelare percorsi sensibili, potenzialmente inclusi quelli relativi a funzionalità non rilasciate.

Analisi del diritto ai domini associati

Gli sviluppatori abilitano i link universali configurando i Domini Associati nella scheda Capacità di Xcode o ispezionando il file .entitlements. Ogni dominio è preceduto da applinks:. Ad esempio, la configurazione di Telegram potrebbe apparire come segue:

<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:telegram.me</string>
<string>applinks:t.me</string>
</array>

Per ulteriori informazioni dettagliate, fare riferimento alla documentazione archiviata per sviluppatori Apple.

Se si lavora con un'applicazione compilata, i diritti possono essere estratti come descritto in questa guida.

Recupero del file Apple App Site Association

Il file apple-app-site-association deve essere recuperato dal server utilizzando i domini specificati nei diritti. Assicurati che il file sia accessibile tramite HTTPS direttamente a https://<domain>/apple-app-site-association. Strumenti come il Validator Apple App Site Association (AASA) possono aiutare in questo processo.

L'app deve implementare metodi specifici per gestire correttamente i link universali. Il metodo principale da cercare è application:continueUserActivity:restorationHandler:. È fondamentale che lo schema degli URL gestiti sia HTTP o HTTPS, poiché altri non saranno supportati.

Validazione del metodo gestore dei dati

Quando un link universale apre un'app, un oggetto NSUserActivity viene passato all'app con l'URL. Prima di elaborare questo URL, è essenziale convalidarlo e sanificarlo per prevenire rischi per la sicurezza. Ecco un esempio in Swift che dimostra il processo:

func application(_ application: UIApplication, continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
// Check for web browsing activity and valid URL
if userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL {
application.open(url, options: [:], completionHandler: nil)
}

return true
}

URLs devono essere analizzati e convalidati con attenzione, specialmente se includono parametri, per proteggere contro potenziali spoofing o dati malformati. L'API NSURLComponents è utile a questo scopo, come dimostrato di seguito:

func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let incomingURL = userActivity.webpageURL,
let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true),
let path = components.path,
let params = components.queryItems else {
return false
}

if let albumName = params.first(where: { $0.name == "albumname" })?.value,
let photoIndex = params.first(where: { $0.name == "index" })?.value {
// Process the URL with album name and photo index

return true

} else {
// Handle invalid or missing parameters

return false
}
}

Attraverso una configurazione e una validazione diligenti, gli sviluppatori possono garantire che i link universali migliorino l'esperienza dell'utente mantenendo standard di sicurezza e privacy.

Tools

  • GetUniversal.link: Aiuta a semplificare il testing e la gestione dei Link Universali della tua app e del file AASA. Basta inserire il tuo dominio per verificare l'integrità del file AASA o utilizzare il dashboard personalizzato per testare facilmente il comportamento dei link. Questo strumento ti aiuta anche a determinare quando Apple indicizzerà nuovamente il tuo file AASA.

References

Support HackTricks

Last updated