Nəqliyyat təhlükəsizliyi düz HTTP mətni maneə törətdi

Aşağıdakı səhv info.plist görə HTTP rejimini aktivləşdirmək üçün info.plist də hansı ayarları təyin etmək lazımdır?

Nəqliyyat təhlükəsizliyi təhlükəli olduğu üçün netartext HTTP resursunu (http: //) blokladı. Müvəqqəti istisnalar sizin Info.plist faylınız vasitəsilə konfiqurasiya edilə bilər.

2019

06 июля '15 в 23:10 2015-07-06 23:10 Jeef , 06 iyul '15 'də saat 23:10' də təyin olunub
@ 27 cavab

Xcode 8.0 və Swift 3.0 və ya Swift 2.2 və ya hətta Objective C istifadə edirsinizsə:

2019

28 окт. Cavab 28 oktyabrda Anit Kumar tərəfindən verilir. 2016-10-28 10:06 '16 saat 10:06 'da 2016-10-28 10:06

İstifadə edin:

2019

04 авг. cavab CristiCh 04 aug tərəfindən verilir . 2015-08-04 13:42 '15 at 13:42 'də yollanıb 2015-08-04 13:42

Ayarlar görsel olaraq aşağıda verilmişdir:

2019

14 нояб. William Cerniuk tərəfindən verilmiş cavab 14 Noyabr. 2015-11-14 22:08 '15 saat 10:08 'da, 2015-11-14 22:08

Tətbiq Nəqliyyat Təhlükəsizliyi forumunda bir mesajı gözdən keçirin ? .

Həmçinin iOS 9 və OSX 10.11-də tətbiqin təhlükəsizliyi üçün Təhlükəsizlik Təhlükəsizliyi İstifadəsi səhifəsini konfiqurasiya et.

Məsələn, müəyyən bir domen əlavə edə bilərsiniz, məsələn:

 <key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>example.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> 

tənbəl variant:

 <key>NSAppTransportSecurity</key> <dict> <!--Include to allow all connections (DANGER)--> <key>NSAllowsArbitraryLoads</key> <true/> </dict> 

Qeyd:

info.plist bir XML faylıdır, belə ki, bu kodu daha çox faylın içərisinə yerləşdirə bilərsiniz.

694
06 июля '15 в 23:19 2015-07-06 23:19 cavab iyul ayının 6-da saat 23: 07-də KMLong tərəfindən verilir. 2015-07-06 23:19

IOS 9 GM HTTPS əvəzinə HTTP-ni istifadə etməyə imkan verən bir konfiqurasiyadır:

 <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <false/> <key>NSExceptionDomains</key> <dict> <key>example.com</key> <!--Include your domain at this line --> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSTemporaryExceptionMinimumTLSVersion</key> <string>TLSv1.1</string> </dict> </dict> </dict> 

NSAllowsArbitraryLoads false olmalıdır, çünki bütün təhlükəli əlaqələri qadağan edir, lakin istisna siyahı HTTPS olmadan bəzi domenlərə qoşulmağa imkan verir.

306
14 сент. Cavab Sound Blaster verilib 14 Sentyabr. 2015-09-14 11:36 '15 at 11:36 2015-09-14 11:36

Bu, plistə əlavə etmək üçün tez bir həll yoludur (lakin tövsiyə olunmur):

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

Nə deməkdir ( Apple sənədlərinə görə):

NSAllowsArbitraryLoads
NSExceptionDomains lüğətində göstərilməyən hər hansı bir domen üçün App Nəqliyyat Təhlükəsizliyi fəaliyyətini dayandırmaq üçün istifadə olunan Boolean dəyəri. Siyahıda göstərilən domenlər bu domen üçün göstərilən parametrləri istifadə edirlər.

Həyatın standart dəyəri bütün əlaqələr üçün default App Nəqliyyat Təhlükəsizlik davranışını tələb edir.

Bağlantıları həqiqətən tavsiye ederim:

mənə səbəbləri və nəticələrini anlamaqda kömək edir.

Aşağıdakı XML (Info.plist faylında) olacaq:

 <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <false/> <key>NSExceptionDomains</key> <dict> <key>PAGE_FOR_WHICH_SETTINGS_YOU_WANT_TO_OVERRIDE</key> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict> 

bütün səhifələr üçün təsadüfi zəngləri qadağan edir, lakin PAGE_FOR_WHICH_SETTINGS_YOU_WANT_TO_OVERRIDE üçün HTTP protokolundan istifadə etməyə imkan verir.

Siz yuxarıdakı XML əlavə edə bilərsiniz:

 <key>NSIncludesSubdomains</key> <true/> 

müəyyən ünvanın alt sahələri üçün təhlükəli əlaqələrə icazə vermək istəsəniz.

Ən yaxşı yanaşma, bütün özbaşına yükləmələri (saxta təyin edilmiş) məhdudlaşdırmaq və biz bildiyimiz ünvanlara icazə vermək üçün istisnalar əlavə etməkdir.

Maraqlı oxucular üçün

2018 yeniləmə:

Apple bu işi aradan qaldırmağı tövsiyə etmir - daha ətraflı məlumatı 207 WWDC 2018 sessiyasında təhlükəsizliyə aid bir çox şeylə izah edə bilərsiniz.

Tarixi səbəblərə və inkişaf mərhələsinə ilk cavabını buraxıram

133
01 сент. Cavab 01 sentyabr tarixində Julian Król tərəfindən verildi 2015-09-01 15:10 '15 'da 15:10' de 2015-09-01 15:10

Bunun baş verdiyinə dair daha çox kontekst istəyənlər üçün, onu necə düzəltməklə yanaşı, aşağıda oxuyun.

İOS 9-un tətbiqi ilə tətbiq və veb xidmətləri arasında əlaqələrin təhlükəsizliyini yaxşılaşdırmaq üçün tətbiq və onun web xidməti arasında təhlükəsiz əlaqələr ən yaxşı təcrübələri izləməlidir. Ən yaxşı təcrübə davranışı, Application Security> istifadə edərək həyata keçirilir:

  • təsadüfən açıqlanmaması və
  • təhlükəsiz default davranış təmin edir.

App Nəqliyyat Təhlükəsizlik Technote -də izah edildiyi kimi, web xidmətinizlə ünsiyyət qurarkən , App Nəqliyyat Təhlükəsizliyi hazırda aşağıdakı tələblərə və davranışlara malikdir:

  • Server ən azı Nəqliyyat səviyyəsinin Təhlükəsizliyi (TLS) protokol versiyasını 1.2 dəstəkləməlidir.
  • Bağlantı şifrələri açıq gizlilik təmin edənlərlə məhdudlaşır (aşağıda bax şifrə siyahısı.)
  • Sertifikatlar SHA256 və ya daha yaxşı xaş alqoritmindən, 2048 bit və ya daha çox RSA düyməsinə və ya 256 bit və ya daha yüksək eliptik əyri (ECC) ilə imzalanmalıdır.
  • Yanlış sertifikatlar çətin bir uğursuzluq və əlaqə yoxdur.

Başqa sözlə, web xidmətinizin tələbi: a) HTTPS və b. İstifadə edin.) Birbaşa təhlükəsizlik TLS v1.2 istifadə edərək şifrələnin.

Lakin, digər mesajlarda qeyd edildiyi kimi, bu yeni davranışı App Nəqliyyat Təhlükəsizlik sistemindən qeyri-etibarlı domeninizi tətbiqinizin Info.plist də göstərərək ləğv edə bilərsiniz.


NSAppTransportSecurity , NSAppTransportSecurity > NSExceptionDomains özelliklerini Info.plist NSAppTransportSecurity lazımdır. Sonra web xidmət domenini NSExceptionDomains .

Məsələn, bir web xidmət tətbiqinin təhlükəsizlik davranışını www.yourwebservicehost.com ünvanına aparmaq istəsən , mən aşağıdakıları edəcəyəm:

  • Xcode proqramını açın.

  • Project Navigator-da Info.plist faylını tapın və üzərinə sağ klikləyin və Info.plist Aç> Mənbə Kodunu seçin. Xassələr faylı sağ bölmədə göstərilir.

  • Aşağıdakı əmlak blokunu əsas xüsusiyyətlər <dict> (ilk <dict> altında).


 <key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>www.example.com</key> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSExceptionMinimumTLSVersion</key> <string>TLSv1.1</string> <key>NSIncludesSubdomains</key> <true/> </dict> </dict> </dict> 

Əlavə alanlar üçün istisnalar təmin etməlisinizsə, NSExceptionDomains altında başqa bir lüğət əmlakı əlavə NSExceptionDomains .

Yuxarıda göstərilən düymələr haqqında daha çox məlumat əldə etmək üçün bu artıq qeyd olunan texnotu oxuyun .

113
21 сент. Cavab nceewhite 21 sep verilir . 2015-09-21 20:56 '15 saat 20:56 'de 2015-09-21 20:56

Plisti birbaşa düzəltmək istəmirəm. GUI-ı istifadə edərək, plistinizi asanlıqla əlavə edə bilərsiniz:

  • Sol tərəfdəki Naviqatorda Info.plist düyməsinə vurun.
  • İndi əsas sahədəki məlumatları dəyişdirin:

    • Sonuncu xəttdə + əlavə edin
    • Bir qrup adını daxil edin: Port Təhlükəsizlik Ayarları
    • Qrupa sağ basın və Add Row seçin Add Row
    • Rastgele Dosyalara İzin Verin
    • EVET'in sağına dəyər qoyun

2019

06 нояб. Cavab Vincent tərəfindən 06 Noyabr. 2015-11-06 11:06 '15 at 11:06 2015-11-06 11:06
10 марта '16 в 14:29 2016-03-10 14:29 Cavab Jayprakash Dubey tərəfindən verilir 10 Mart 'da 14:29 2016-03-10 14:29

Nəqliyyat təhlükəsizliyi iOS 9.0 və ya daha yeni mövcuddur. Uygulamanızın içərisində WS zəng etməyə çalışarkən bu xəbərdarlıqınız ola bilər:

Proqram Nəqliyyat Təhlükəsizliyi təhlükəli olduğu üçün HTTP düz mətn resursunun (http: //) yüklənməsini maneə törətmişdir. Müvəqqəti istisnalar tətbiqinizin Info.plist faylı ilə konfiqurasiya edilə bilər.

Info.plistinizə aşağıdakıları əlavə edin:

 <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key><true/> </dict> 
20
18 сент. Malek Belkahla tərəfindən verilən cavabı 18 s. 2015-09-18 20:36 '15 saat 20:36 ' de

İnkişaf nümunəsi

Burada ATS-ni (= təhlükəsiz) saxlayır, lakin HTTPS əvəzinə HTTP- ni istifadə edərək localhost- a qoşulmağa imkan verən bir plistin ekran görüntüsüdür. Xcode 7.1.1-də işləyir.

2019

Hansı parametrləri bu texnologiyada göstərildiyi kimi avtomatik olaraq istifadə oluna biləcəyini düşünərək :

 /usr/bin/nscurl --ats-diagnostics --verbose https://your-domain.com 
12
07 окт. cavab 07 oktyabr ecotax verilir . 2015-10-07 11:29 '15 at 11:29 2015-10-07 11:29

Info.plist-ə qayıdın

  • Boş yerə sağ basın və "Add line" düyməsini basın.
  • Aşağıdakı adı NSAppTransportSecurity kimi əsas adı daxil edin
  • "Qeyri-adi Domains" seçin, bunun üçün yeni bir maddə əlavə edin
  • Domeninizin adını yazmaq lazımdır.
  • Domen tipini simvoldan lüğətə dəyişin, yeni maddə əlavə edin
  • NST ModernExceptionAllowsInsecureHTTPLoads, əsl dəyər ilə boolean olacaq. 2019
09 янв. Cavab Shailendra Suriyal Jan 09 tərəfindən verilir 2017-01-09 09:28 '17 saat 09:28 'da 2017-01-09 09:28

Apple-a görə, ümumiyyətlə, ATS-ni silmək, bunun üçün yaxşı bir səbəb olmasa, ərizə rədd edilməsinə səbəb olacaq. Bundan sonra, təhlükəsiz bir şəkildə istifadə edə biləcəyi domainlər üçün istisnalar əlavə etməlisiniz.

Apple istifadə edən parametrləri sizə izah edən böyük bir vasitədir: Terminaldə yazın

 /usr/bin/nscurl --ats-diagnostics --verbose https://www.example.com/whatever 

və nscurl sorğunun başarısız olub olmadığını yoxlayacaq, sonra müxtəlif parametrləri sınamaq və dəqiq nə şifrəni və nə edəcəyinizi bildirəcəkdir. Məsələn, ziyarət etdiyim üçüncü tərəfin URL'lərinə görə bu əmr mənə bu lüğətin keçdiyini bildirdi:

 { NSExceptionDomains = { "www.example.com" = { NSExceptionRequiresForwardSecrecy = false; }; }; } 

Kontrollerinizin ötesinde olan öz siteleriniz ve üçüncü taraf siteleri arasında ayırmak üçün, məsələn, NSThirdPartyExceptionRequiresForwardSecreth düyməsini istifadə edin.

10
18 апр. Cavab gnasher729 18 apr tərəfindən verilir . 2016-04-18 02:54 '16 at 2:54 2016-04-18 02:54

İstifadə edin:

2019

21 сент. Tejinder tərəfindən 21 Sentyabrda cavab verildi. 2015-09-21 12:11 '15 'da 12:11' de, 2015-09-21 12:11

2015-09-25 (2015-09-18-ci illərdə Xcode yeniləndikdən sonra):

Mən tənbəl üsuldan istifadə etdim, amma işə yaramadı. Aşağıdakılar mənim cəhdlərimdir.

Birincisi,

 <key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>www.xxx.yyy.zzz</key> <dict> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSTemporaryExceptionMinimumTLSVersion</key> <string>TLSv1.1</string> <key>NSIncludesSubdomains</key> <true/> </dict> </dict> </dict> 

İkincisi,

 <key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>www.xxx.yyy.zzz</key> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSExceptionMinimumTLSVersion</key> <string>TLSv1.1</string> <key>NSIncludesSubdomains</key> <true/> </dict> </dict> </dict> 

Nəhayət, mən tənbəl üsuldan istifadə etdim:

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

Bu bir az qeyri-müəyyən ola bilər, amma digər həllər tapmıram.

8
25 сент. Heedoo tərəfindən verilmiş cavab Sep 25 2015-09-25 05:41 '15 at 5:41 'də 2015-09-25 05:41

Qeyd. Plistinizdəki istisna sahə LOWER-CASE olmalıdır.

Məsələn: cihazınızı "Ayarlar"> "Mübadilə" dəki "MyAwesomeMacbook" adlandırdınız; serveriniz (test məqsədi ilə) MyAwesomeMacbook.local: 3000-də işləyir və ərizəiniz http: //MyAwesomeMacbook.local: 3000 / files ... bir sorğu göndərməlidir ... plistinizə "myawesomemacbook.local" istisna domen kimi göstərməlisiniz .

-

Sizin info.plist ...

 <key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>myawesomemacbook.local</key> <dict> <!--Include to allow subdomains--> <key>NSIncludesSubdomains</key> <true/> <!--Include to allow HTTP requests--> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict> 
8
12 сент. Cavab ObjectiveTC tərəfindən verilib 12 Sep. 2016-09-12 21:17 '16 saat 21:17 2016-09-12 21:17

Problemin 10/27/15 tarixindən əvvəl Xcode 7.1 üçün yenilənməsi:

Info.plist-də yeni dəyər "Application Security Settings". Buradan, bu lüğətdə aşağıdakılar olmalıdır:

  • Təsadüfi yüklərə icazə = YES
  • Fövqəladə domenlər (burada http domeninizi daxil edin)
6
27 окт. Cavab 27 oktyabrda MkaysWork tərəfindən verildi . 2015-10-27 22:21 '15 saat 10:21 'da 2015-10-27 22:21

Oraya necə getmək lazım olduğunu xatırlatmaq olar ...

Info.plist Main.storyboard və viewController.swift-in altındakı fayllardan biridir.

İlk dəfə bastığınızda, adətən bir masa şəklindədir, beləliklə faylın sağ düyməsini basın və "mənbə kodu" kimi açın və aşağıdakı kodu əlavə edin, yəni:

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

Yalnız yuxarıdakı kodu kopyalayın

  "</dict> </plist>" 

sonda olan.

6
25 окт. Cavab Naishta tərəfindən 25 Oktyabrda verilir . 2015-10-25 20:18 '15 saat 20:18 'də 2015-10-25 20:18

Xcode 7-də bunu etmək lazımdır:

Info.plist faylında əlavə edin:

  • NSAppTransportSecurity Lüğət və bir uşaq kimi
  • NSAllowsArbitraryLoads Boolean dəyəri kimi YES
4
03 дек. Cavab Uma Madhavi 03 dekabr verilir. 2017-12-03 06:23 '17 saat 06:23 'da 2017-12-03 06:23

info.plist faylına bu kodu əlavə edin:

 <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key><true/> </dict> 
4
03 дек. Cavab Jayesh Miruliya tərəfindən 03 dekabr. 2017-12-03 06:22 '17 saat 06:22 'da 2017-12-03 06:22

Burada gəldikləri üçün WKWebView hər zaman ağ olduqlarını və heç bir şey yükləməyinin səbəbini tapmaq üçün çalışırlar (burada açıqlandığı kimi, WKWebView-in macOS proqramı üçün tez işləmək üçün necə ):

Yuxarıdakı bütün raket fənləri işləmirsə, açıq-aşkar: sandbox ayarlarını yoxlayın

2019

09 окт. Cavab Alekseev Vladimir 09 oktyabr verilir. 2017-10-09 13:44 '17 saat 13:44 'da 2017-10-09 13:44

NSExceptionDomains istifadə edərək hədəf saytın resursları (məsələn, js faylları) http üzərindəki xarici domenlərdən yükləyə bilməsi səbəbindən təsirini eyni zamanda tətbiq edə bilməz. Bu xarici domenləri NSExceptionDomains a əlavə edərək həll edə bilərsiniz.

Hansı resursların yüklənə bilməyəcəyini yoxlamaq üçün uzaqdan ayıklama istifadə edin. Burada bir tutorial: http://geeklearning.io/apache-cordova-and-remote-debugging-on-ios/

1
14 авг. Cavab Nurlan 14 avqusta verilir . 2017-08-14 09:12 '17 'da 9:12' də 2017-08-14 09:12 'də

Cordoba üçün iOS.json ünvanınıza əlavə etmək istəyirsinizsə aşağıdakıları et:

 "NSAppTransportSecurity": [ { "xml": "<dict><key>NSAllowsArbitraryLoads</key><true /></dict>" } ] 

Və içəridə olmalıdır:

 "*-Info.plist": { "parents": { } } 
1
21 марта '16 в 15:41 2016-03-21 15:41 cavab 21 mart '16 'da 15:41 2016-03-21 15:41 zeusstl verilir

Sürətli 4-də və 10-da, NSAllowsArbitraryLoads-nun özünəməxsus yükləmələrinə icazə verməsini dəyişdirin. beləliklə belə görünür:

 <key>App Transport Security Settings</key> <dict> <key>Allow Arbitrary Loads</key><true/> </dict> 
0
16 янв. Cavab Faris tərəfindən 16 yanvarda verilir. 2019-01-16 13:56 '19 saat 13:56 'də 2019-01-16 13:56

Bir çoxunun qeyd etdiyinə görə, bu, iOS 9.0 xüsusiyyətiylə bir problemdir. Onlar App Nəqliyyat Təhlükəsizliyi kimi bir şey əlavə etdi və mənim tətbiqlərimi pozduqda da narahat oldum.

NSALlowsArbitraryLoads anahtarı ilə NSAppTransportSecurity sözündeki NSAppTransportSecurity sözcüğüyle paketleyebilirsiniz. Plist faylında, lakin nəticədə HTTPS önekini oluşturmak üçün URL'lerinizi oluşturan kodu yeniden yazmalısınız: //.

Apple iOS 9.0-da NSUrlConnection sinifini yenidən yazdı. Bu barədə NSURLConnection-da oxuya bilərsiniz.

Bundan əlavə, doğru həlli həyata keçirmək üçün vaxtınız olmadığı qədər iOS 9.0'dan imtina etmək məcburiyyətindəsiniz.

-4
01 окт. Mark DeWald tərəfindən Oct 01 verildi 2015-10-01 21:41 '15 'da 21:41' de, 2015-10-01 21:41