iOS Universal Links

Support HackTricks

Εισαγωγή

Οι καθολικοί σύνδεσμοι προσφέρουν μια αδιάκοπη εμπειρία ανακατεύθυνσης στους χρήστες, ανοίγοντας απευθείας το περιεχόμενο στην εφαρμογή, παρακάμπτοντας την ανάγκη για ανακατεύθυνση μέσω Safari. Αυτοί οι σύνδεσμοι είναι μοναδικοί και ασφαλείς, καθώς δεν μπορούν να διεκδικηθούν από άλλες εφαρμογές. Αυτό διασφαλίζεται με τη φιλοξενία ενός αρχείου JSON apple-app-site-association στον ριζικό κατάλογο της ιστοσελίδας, καθορίζοντας έναν επαληθεύσιμο σύνδεσμο μεταξύ της ιστοσελίδας και της εφαρμογής. Σε περιπτώσεις όπου η εφαρμογή δεν είναι εγκατεστημένη, το Safari θα αναλάβει και θα κατευθύνει τον χρήστη στη σελίδα, διατηρώντας την παρουσία της εφαρμογής.

Για τους δοκιμαστές διείσδυσης, το αρχείο apple-app-site-association είναι ιδιαίτερα ενδιαφέρον καθώς μπορεί να αποκαλύψει ευαίσθητους δρόμους, πιθανώς περιλαμβάνοντας αυτούς που σχετίζονται με μη δημοσιευμένα χαρακτηριστικά.

Ανάλυση του Δικαιώματος Σχετικών Τομέων

Οι προγραμματιστές ενεργοποιούν τους Καθολικούς Συνδέσμους ρυθμίζοντας τους Σχετικούς Τομείς στην καρτέλα Δυνατοτήτων του Xcode ή ελέγχοντας το αρχείο .entitlements. Κάθε τομέας προτάσσεται με applinks:. Για παράδειγμα, η ρύθμιση του Telegram μπορεί να εμφανίζεται ως εξής:

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

Για πιο ολοκληρωμένες πληροφορίες, ανατρέξτε στην αρχειοθετημένη τεκμηρίωση προγραμματιστών της Apple.

Εάν εργάζεστε με μια μεταγλωττισμένη εφαρμογή, τα δικαιώματα μπορούν να εξαχθούν όπως περιγράφεται σε αυτήν την οδηγία.

Ανάκτηση του Αρχείου Συσχέτισης Ιστοσελίδας της Apple

Το αρχείο apple-app-site-association θα πρέπει να ανακτηθεί από τον διακομιστή χρησιμοποιώντας τα domains που καθορίζονται στα δικαιώματα. Βεβαιωθείτε ότι το αρχείο είναι προσβάσιμο μέσω HTTPS απευθείας στο https://<domain>/apple-app-site-association. Εργαλεία όπως ο Επαληθευτής Αρχείου Συσχέτισης Ιστοσελίδας της Apple (AASA) μπορούν να βοηθήσουν σε αυτή τη διαδικασία.

Διαχείριση Καθολικών Συνδέσμων στην Εφαρμογή

Η εφαρμογή πρέπει να υλοποιήσει συγκεκριμένες μεθόδους για να διαχειριστεί σωστά τους καθολικούς συνδέσμους. Η κύρια μέθοδος που πρέπει να αναζητηθεί είναι η application:continueUserActivity:restorationHandler:. Είναι κρίσιμο ότι το σχήμα των URLs που διαχειρίζεται είναι HTTP ή HTTPS, καθώς άλλα δεν θα υποστηρίζονται.

Επικύρωση της Μεθόδου Διαχείρισης Δεδομένων

Όταν ένας καθολικός σύνδεσμος ανοίγει μια εφαρμογή, ένα αντικείμενο NSUserActivity μεταφέρεται στην εφαρμογή με το URL. Πριν από την επεξεργασία αυτού του URL, είναι απαραίτητο να το επικυρώσετε και να το καθαρίσετε για να αποφευχθούν κίνδυνοι ασφαλείας. Ακολουθεί ένα παράδειγμα σε Swift που δείχνει τη διαδικασία:

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
}

Οι διευθύνσεις URL θα πρέπει να αναλύονται και να επικυρώνονται προσεκτικά, ειδικά αν περιλαμβάνουν παραμέτρους, για να προστατευτούν από πιθανή παραχάραξη ή κακώς διαμορφωμένα δεδομένα. Η API NSURLComponents είναι χρήσιμη για αυτόν τον σκοπό, όπως αποδεικνύεται παρακάτω:

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
}
}

Μέσω επιμελούς διαμόρφωσης και επικύρωσης, οι προγραμματιστές μπορούν να διασφαλίσουν ότι οι καθολικοί σύνδεσμοι βελτιώνουν την εμπειρία του χρήστη ενώ διατηρούν τα πρότυπα ασφάλειας και ιδιωτικότητας.

Tools

  • GetUniversal.link: Βοηθά στην απλοποίηση της δοκιμής και διαχείρισης των Καθολικών Συνδέσμων και του αρχείου AASA της εφαρμογής σας. Απλώς εισάγετε το domain σας για να επαληθεύσετε την ακεραιότητα του αρχείου AASA ή χρησιμοποιήστε τον προσαρμοσμένο πίνακα ελέγχου για να δοκιμάσετε εύκολα τη συμπεριφορά των συνδέσμων. Αυτό το εργαλείο σας βοηθά επίσης να προσδιορίσετε πότε η Apple θα ευρετηριάσει ξανά το αρχείο AASA σας.

References

Support HackTricks

Last updated