iOS Universal Links

Support HackTricks

Вступ

Універсальні посилання пропонують безшовний редирект для користувачів, безпосередньо відкриваючи контент в додатку, обходячи необхідність редиректу через Safari. Ці посилання є унікальними та безпечними, оскільки їх не можуть вимагати інші додатки. Це забезпечується розміщенням файлу 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 App

Файл apple-app-site-association слід отримати з сервера, використовуючи домени, зазначені в правах доступу. Переконайтеся, що файл доступний через HTTPS безпосередньо за адресою https://<domain>/apple-app-site-association. Інструменти, такі як Apple App Site Association (AASA) Validator, можуть допомогти в цьому процесі.

Обробка універсальних посилань у додатку

Додаток повинен реалізувати специфічні методи для правильної обробки універсальних посилань. Основний метод, на який слід звернути увагу, це application:continueUserActivity:restorationHandler:. Важливо, щоб схема URL, що обробляються, була 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
}

URLs слід ретельно аналізувати та перевіряти, особливо якщо вони містять параметри, щоб захиститися від потенційного спуфінгу або неправильно сформованих даних. 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
}
}

Через дбайливу конфігурацію та валідацію розробники можуть забезпечити, що універсальні посилання покращують користувацький досвід, зберігаючи при цьому стандарти безпеки та конфіденційності.

Інструменти

  • GetUniversal.link: Допомагає спростити тестування та управління універсальними посиланнями вашого додатку та файлом AASA. Просто введіть свій домен, щоб перевірити цілісність файлу AASA, або використовуйте спеціальну панель для легкого тестування поведінки посилань. Цей інструмент також допомагає визначити, коли Apple наступного разу проіндексує ваш файл AASA.

Посилання

Support HackTricks

Last updated