मैं अपनी जानकारी में NSAppTransportSecurity कैसे जोड़ सकता हूं।


124

https://developer.apple.com/videos/wwdc/2015/?id=711 @ 5: 55

मैं अपनी जानकारी में यह जोड़ने में सक्षम नहीं हो सकता। इसका कोई मूल्य नहीं है। मैं XCode संस्करण 7.0 बीटा (7A121l) चला रहा हूं, और iOS9 पर परीक्षण कर रहा हूं।

क्योंकि मैं विशेष रूप से यह घोषणा नहीं कर सकता कि वीडियो में URL मुझे क्या दिख रहा है, मुझे पता चलता है कि "ऐप ट्रांसपोर्ट सिक्योरिटी ने असुरक्षित HTTP (http: //) संसाधन लोड को अवरुद्ध कर दिया है क्योंकि यह असुरक्षित है। आपके ऐप के माध्यम से अस्थायी अपवादों को कॉन्फ़िगर किया जा सकता है। Info.plist फ़ाइल "त्रुटियाँ।

हालाँकि, मैं इसे कॉन्फ़िगर करने में सक्षम नहीं लगता। कोई विचार?


आपके पास वास्तव में अब कोई प्रश्न नहीं है, आपको बस अपने स्वयं के प्रश्न का उत्तर देना चाहिए और फिर उचित समय की देरी के बाद स्वीकार करना चाहिए।
नॉर्मन एच।

एक डोमेन नाम क्या है ? यह एक सर्वर बेस यूआरएल या कोई अन्य है? और मेरा ऐप डोमेन नाम कहां खोजा जाए?
निक

डोमेन नाम सबसे आम शब्द में से एक है। वैसे यह वह है जिसे खरीदा जाता है और फिर होस्ट करने के बाद आप इसे सर्वर बेस यूआरएल के रूप में उपयोग कर सकते हैं जिसे आप एपीआई के लिए उपयोग करते हैं। ऐप डोमेन नाम जैसा कुछ भी नहीं है। तो आप उस डोमेन नाम का उपयोग कर सकते हैं जहां एपीआई लिखा है।
आशीष

जवाबों:


131

इसके साथ कोशिश करें --- मेरे लिए Xcode- बीटा 4 7.0 में काम किया

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>yourdomain.com</key>
        <dict>
            <!--Include to allow subdomains-->
            <key>NSIncludesSubdomains</key>
            <true/>
            <!--Include to allow HTTP requests-->
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <!--Include to specify minimum TLS version-->
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>
    </dict>
</dict>

एक और विकल्प, यदि आप एटीएस को निष्क्रिय करना चाहते हैं तो आप इसका उपयोग कर सकते हैं:

<key>NSAppTransportSecurity</key>  
 <dict>  
      <key>NSAllowsArbitraryLoads</key><true/>  
 </dict>

लेकिन यह बिल्कुल भी अनुशंसित नहीं है। सर्वर में एसएसएल प्रमाणपत्र होना चाहिए और ताकि कोई गोपनीयता लीक न हो।


मेरे पास XCode 7.2 (7C68) है और मैंने अपने परीक्षण प्रोजेक्ट के info.plist को पूरी तरह से (एटीएस को अक्षम करके) संशोधित किया है। लेकिन यह काम नहीं कर रहा है। कोई सुराग?
सानंद्री

आम तौर पर यह काम करता है ... क्या आप यहां उर कोड पेस्ट कर सकते हैं और फिर हम देख सकते हैं
आशीष

और यह भी कि अगर आपके पास दो या दो से अधिक डोमनी हैं तो आपको <key>NSAllowsArbitraryLoads</key> <true/><key>NSExceptionDomains</key> मेरे लिए अन्यथा जोड़ना होगा क्योंकि यह किसी कारण से रिलीज़ संस्करण के लिए काम नहीं करता था
P.Lorand

90

आपको अपनी जानकारी के लिए NSAppTransportSecurity डिक्शनरी में YES में बस NSAllowsArbiteathLoads कुंजी को अपने info.plist फ़ाइल में जोड़ना होगा।

उदाहरण के लिए,

 <key>NSAppTransportSecurity</key>
 <dict>
      <key>NSAllowsArbitraryLoads</key>
     <true/>
 </dict>

यहाँ छवि विवरण दर्ज करें


1
यह एक वर्कअराउंड है। असली मुद्दा @ आशीष के जवाब में मृत्यु है
जुडेपेरेरा

45

यह मेरे लिए काम नहीं कर रहा था, लेकिन इसने यह चाल चली:

<key>NSAppTransportSecurity</key>  
     <dict>  
          <key>NSAllowsArbitraryLoads</key><true/>  
     </dict>  

मुझे लगता है कि तुम्हारा मतलब <true/>के बजाय<YES/>
क्लिफ्टन labrum

1
सुरक्षा के दृष्टिकोण से, यह वास्तव में एक तरीका है, यह कैसे करना है, क्योंकि कोई भी कभी भी कोड के इस खंड की समीक्षा नहीं करेगा और इसे ठीक से निर्दिष्ट डोमेन में अपडेट करेगा।
.ग्रेगचैच

1
यह एक अच्छा अभ्यास नहीं है। बल्कि हमें विशिष्ट डोमेन की अनुमति देनी चाहिए।
आशीष

1
मेरे जैसे अन्य </dict></plist>
नवाबों के लिए

21

बस स्पष्ट करने के लिए ... आपको हमेशा httpS का उपयोग करना चाहिए

लेकिन आप इसे अपवाद को जोड़कर बायपास कर सकते हैं:

यहाँ छवि विवरण दर्ज करें



4

अद्यतन उत्तर (wwdc 2016 के बाद):

IOS apps will require secure HTTPS connections by the end of 2016

ऐप ट्रांसपोर्ट सिक्योरिटी, या एटीएस, एक ऐसी सुविधा है जिसे Apple ने iOS 9 में पेश किया है। जब एटीएस सक्षम होता है, तो यह ऐप को गैर-सुरक्षित HTTP के बजाय HTTPS कनेक्शन पर वेब सेवाओं से जुड़ने के लिए मजबूर करता है।

हालाँकि, डेवलपर्स अभी भी एटीएस को बंद कर सकते हैं और अपने ऐप्स को उपरोक्त उत्तरों में उल्लिखित एक HTTP कनेक्शन पर डेटा भेजने की अनुमति दे सकते हैं। 2016 के अंत में, ऐप्पल उन सभी डेवलपर्स के लिए एटीएस अनिवार्य कर देगा, जो ऐप स्टोर में अपने ऐप सबमिट करने की उम्मीद करते हैं। संपर्क


इस वर्ष के अंत के बाद, https का उपयोग किए बिना नया ऐप या अपडेट ऐप अस्वीकार कर दिया जाएगा। बाईपास के साथ मौजूदा ऐप के बारे में क्या? (हमें एक बल अद्यतन की आवश्यकता है?)
Paraneetharan Saravanaperumal

2
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>com</key>
        <dict>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
        <key>net</key>
        <dict>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
        <key>org</key>
        <dict>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

यह .com .net .org से कनेक्ट करने की अनुमति देगा


एक उदाहरण के लिए धन्यवाद कि कई डोमेन कैसे जोड़े जाएं।
नास्तिक 3

2
<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>uservoice.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
        </dict>
    </dict>

1

पैरासारा के उत्तर के बारे में थोड़ा और समझाने के लिए: ऐप ट्रांसपोर्ट सुरक्षा अनिवार्य हो जाएगी और इसे बंद करने की कोशिश करने से आपका ऐप अस्वीकृत हो सकता है।

एक डेवलपर के रूप में, आप ऐप ट्रांसपोर्ट सिक्योरिटी को बंद कर सकते हैं यदि आपका नेटवर्किंग कोड इसके साथ काम नहीं करता है, और आप किसी भी समस्या को ठीक करने से पहले अन्य विकास जारी रखना चाहते हैं। पांच की टीम में कहें, चार अन्य चीजों पर काम करना जारी रख सकता है जबकि एक सभी समस्याओं को ठीक करता है। आप ऐप ट्रांसपोर्ट सुरक्षा को भी डिबगिंग टूल के रूप में बंद कर सकते हैं यदि आपको नेटवर्किंग समस्याएं हैं और आप चेक करना चाहते हैं कि क्या वे ऐप ट्रांसपोर्ट सुरक्षा के कारण हैं। जैसे ही आप जानते हैं कि आपको इसे तुरंत फिर से चालू करना चाहिए।

समाधान जो आपको अवश्य करना चाहिए कि भविष्य में उपयोग करते हैं, सब पर http उपयोग करने के लिए नहीं है जब तक आप जो https का समर्थन नहीं करता एक तीसरी पार्टी सर्वर का उपयोग है। यदि आपका अपना सर्वर https का समर्थन नहीं करता है, तो Apple को इससे समस्या होगी। थर्ड पार्टी सर्वर के साथ भी, मैं शर्त नहीं लगाता कि Apple इसे स्वीकार करता है।

सर्वर सुरक्षा के लिए विभिन्न जाँचों के साथ भी। कुछ बिंदु पर Apple केवल न्यायोचित अपवादों को स्वीकार करेगा।

लेकिन ज्यादातर, इस पर विचार करें: आप अपने ग्राहकों की गोपनीयता को खतरे में डाल रहे हैं। वह मेरी किताब में कोई बड़ा नहीं है। ऐसा मत करो। अपना कोड ठीक करें, असुरक्षित कोड चलाने की अनुमति न मांगें।



1

मैक शेल कमांड लाइन में , निम्न कमांड का उपयोग करें:

plutil -insert NSAppTransportSecurity -xml "<array><string> hidden </string></array>" [location of your xcode project]/Info.plist 

कमांड आपके plist फ़ाइल में सभी आवश्यक मान जोड़ देगा।


1

XCODE 8, स्विफ्ट 3: आपको एक पंक्ति जोड़ने की आवश्यकता है: **

"ऐप परिवहन सुरक्षा सेटिंग"

** जानकारी के अंदर जानकारी। संपत्ति की सूची के भीतर।


0

Xcode 9.2, स्विफ्ट 4, यह मेरे लिए काम करता है।

<key>App Transport Security Settings</key>
<dict>
    <key>Allow Arbitrary Loads</key>
    <true/>
</dict>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.