iOS Universal Links

Support HackTricks

Introduction

यूनिवर्सल लिंक उपयोगकर्ताओं को सहज रीडायरेक्शन अनुभव प्रदान करते हैं, जो सीधे ऐप में सामग्री खोलते हैं, सफारी रीडायरेक्शन की आवश्यकता को बायपास करते हैं। ये लिंक विशिष्ट और सुरक्षित होते हैं, क्योंकि इन्हें अन्य ऐप द्वारा दावा नहीं किया जा सकता। यह सुनिश्चित किया जाता है कि वेबसाइट की रूट डायरेक्टरी में apple-app-site-association JSON फ़ाइल हो, जो वेबसाइट और ऐप के बीच एक सत्यापित लिंक स्थापित करती है। यदि ऐप स्थापित नहीं है, तो सफारी उपयोगकर्ता को वेबपेज पर ले जाएगी, ऐप की उपस्थिति बनाए रखते हुए।

पेनटेस्टर्स के लिए, apple-app-site-association फ़ाइल विशेष रुचि की होती है क्योंकि यह संवेदनशील पथों को प्रकट कर सकती है, संभावित रूप से उन पथों को शामिल करते हुए जो अप्रकाशित सुविधाओं से संबंधित हैं।

Associated Domains Entitlement का विश्लेषण करना

डेवलपर्स यूनिवर्सल लिंक को Xcode के Capabilities टैब में Associated Domains को कॉन्फ़िगर करके या .entitlements फ़ाइल की जांच करके सक्षम करते हैं। प्रत्येक डोमेन के आगे applinks: जोड़ा जाता है। उदाहरण के लिए, टेलीग्राम की कॉन्फ़िगरेशन इस प्रकार दिखाई दे सकती है:

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

For more comprehensive insights, refer to the archived Apple Developer Documentation.

If working with a compiled application, entitlements can be extracted as outlined in this guide.

एप्पल ऐप साइट एसोसिएशन फ़ाइल प्राप्त करना

apple-app-site-association फ़ाइल को सर्वर से उन डोमेन का उपयोग करके प्राप्त किया जाना चाहिए जो अधिकारों में निर्दिष्ट हैं। सुनिश्चित करें कि फ़ाइल HTTPS के माध्यम से सीधे https://<domain>/apple-app-site-association पर सुलभ है। Apple App Site Association (AASA) Validator जैसे उपकरण इस प्रक्रिया में मदद कर सकते हैं।

ऐप में यूनिवर्सल लिंक को संभालना

ऐप को यूनिवर्सल लिंक को सही तरीके से संभालने के लिए विशिष्ट विधियों को लागू करना चाहिए। देखने के लिए प्राथमिक विधि 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
}

URLs को सावधानीपूर्वक पार्स और मान्य किया जाना चाहिए, विशेष रूप से यदि उनमें पैरामीटर शामिल हैं, संभावित स्पूफिंग या गलत डेटा से बचने के लिए। NSURLComponents API इस उद्देश्य के लिए उपयोगी है, जैसा कि नीचे दिखाया गया है:

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

Through diligent configuration and validation, developers can ensure that universal links enhance user experience while maintaining security and privacy standards.

Tools

  • GetUniversal.link: आपकी ऐप के यूनिवर्सल लिंक और AASA फ़ाइल के परीक्षण और प्रबंधन को सरल बनाने में मदद करता है। AASA फ़ाइल की अखंडता को सत्यापित करने के लिए बस अपना डोमेन दर्ज करें या लिंक व्यवहार का आसानी से परीक्षण करने के लिए कस्टम डैशबोर्ड का उपयोग करें। यह उपकरण आपको यह भी निर्धारित करने में मदद करता है कि Apple अगली बार आपकी AASA फ़ाइल को कब अनुक्रमित करेगा।

References

Support HackTricks

Last updated