iOS Universal Links

Support HackTricks

Introduction

Universal links hutoa uzoefu wa uelekezaji usio na mshono kwa watumiaji kwa kufungua moja kwa moja maudhui katika programu, ikiepuka hitaji la uelekezaji wa Safari. Viungo hivi ni vya kipekee na salama, kwani haviwezi kudaiwa na programu nyingine. Hii inahakikishwa kwa kuhifadhi faili ya apple-app-site-association ya JSON kwenye saraka ya mzizi ya tovuti, ikianzisha kiungo kinachoweza kuthibitishwa kati ya tovuti na programu. Katika hali ambapo programu haijasanidiwa, Safari itachukua jukumu na kumwelekeza mtumiaji kwenye ukurasa wa wavuti, ikihifadhi uwepo wa programu.

Kwa wapimaji wa penetration, faili ya apple-app-site-association ni ya umuhimu maalum kwani inaweza kufichua njia nyeti, ambazo zinaweza kujumuisha zile zinazohusiana na vipengele ambavyo havijachapishwa.

Kuchambua Haki za Domain Zinazohusiana

Wakuu wa programu wanawezesha Universal Links kwa kusanidi Domains Zinazohusiana katika tab ya Uwezo ya Xcode au kwa kukagua faili ya .entitlements. Kila domain inaanzishwa na applinks:. Kwa mfano, usanidi wa Telegram unaweza kuonekana kama ifuatavyo:

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

Kwa maelezo zaidi ya kina, rejelea nyaraka za Apple Developer zilizohifadhiwa.

Ikiwa unafanya kazi na programu iliyokusanywa, haki zinaweza kutolewa kama ilivyoelezwa katika hiki kiongozi.

Kurejesha Faili ya Muungano wa Tovuti ya Programu ya Apple

Faili ya apple-app-site-association inapaswa kurejeshwa kutoka kwa seva kwa kutumia maeneo yaliyoainishwa katika haki. Hakikisha faili inapatikana kupitia HTTPS moja kwa moja kwenye https://<domain>/apple-app-site-association. Zana kama Mthibitishaji wa Muungano wa Tovuti ya Programu ya Apple (AASA) zinaweza kusaidia katika mchakato huu.

Kushughulikia Viungo vya Ulimwengu katika Programu

Programu lazima itekeleze mbinu maalum ili kushughulikia viungo vya ulimwengu kwa usahihi. Mbinu kuu ya kutafuta ni application:continueUserActivity:restorationHandler:. Ni muhimu kwamba mpango wa URL zinazoshughulikiwa ni HTTP au HTTPS, kwani zingine hazitasaidiwa.

Kuthibitisha Mbinu ya Kushughulikia Data

Wakati kiungo cha ulimwengu kinapofungua programu, kitu cha NSUserActivity kinapitishwa kwa programu na URL. Kabla ya kushughulikia URL hii, ni muhimu kuthibitisha na kusafisha ili kuzuia hatari za usalama. Hapa kuna mfano katika Swift unaoonyesha mchakato:

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 zinapaswa kuchambuliwa na kuthibitishwa kwa makini, hasa ikiwa zinajumuisha vigezo, ili kujilinda dhidi ya udanganyifu au data isiyo sahihi. API ya NSURLComponents ni muhimu kwa ajili hii, kama inavyoonyeshwa hapa chini:

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

Kupitia mipangilio na uthibitisho wa makini, waendelezaji wanaweza kuhakikisha kwamba viungo vya ulimwengu vinaboresha uzoefu wa mtumiaji huku wakihifadhi viwango vya usalama na faragha.

Tools

  • GetUniversal.link: Inasaidia kurahisisha upimaji na usimamizi wa Viungo vya Ulimwengu vya programu yako na faili ya AASA. Ingiza tu kikoa chako ili kuthibitisha uhalali wa faili ya AASA au tumia dashibodi maalum ili kupima tabia ya kiungo kwa urahisi. Chombo hiki pia kinakusaidia kubaini wakati Apple itakapofanya utafutaji wa faili yako ya AASA.

References

Support HackTricks

Last updated