Pertanyaan Keamanan transportasi telah memblokir HTTP cleartext


Pengaturan apa yang harus saya masukkan ke dalam info.plist mengaktifkan mode HTTP sesuai pesan kesalahan berikut ini?

Keamanan transportasi telah memblokir sumber teks HTTP (http: //)   memuat karena tidak aman. Pengecualian sementara dapat dikonfigurasi melalui   file Info.plist aplikasi Anda.

Xcode

Asumsikan bahwa domain saya adalah example.com.


1279
2017-07-06 20:10


asal


Jawaban:


Jika Anda menggunakan Xcode 8.0 dan Swift 3.0 atau Swift 2.2 atau bahkan Objective C:

Enter image description here

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>example.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

238
2017-10-28 07:06



Menggunakan:

Enter image description here

Anda harus mengatur NSAllowsArbitraryLoads kunci untuk IYA NIH dibawah NSAppTransportSecurity kamus di file .plist Anda.

Plist configuration


889
2017-08-04 10:42



Berikut pengaturannya secara visual:

visual settings for NSAllowsArbitraryLoads in info.plist via Xcode GUI


788
2017-11-14 19:08



Lihat posting forum Keamanan Transportasi Aplikasi?.

Juga halamannya Mengonfigurasi Pengecualian Keamanan Aplikasi Aplikasi di iOS 9 dan OSX 10.11.

Misalnya, Anda dapat menambahkan domain spesifik seperti:

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

Opsi malas adalah:

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

catatan:

info.plist adalah file XML sehingga Anda dapat menempatkan kode ini lebih atau kurang di mana saja di dalam file.


686
2017-07-06 20:19



Ini diuji dan bekerja pada benih iOS 9 GM - ini adalah konfigurasi untuk memungkinkan spesifik domain untuk menggunakan HTTP, bukan HTTPS:

<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 harus false, karena tidak mengizinkan semua koneksi tidak aman, tetapi daftar pengecualian memungkinkan koneksi ke beberapa domain tanpa HTTPS.


296
2017-09-14 08:36



Ini adalah solusi cepat (tetapi tidak disarankan) untuk menambahkan ini di plist:

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

Yang artinya (menurut Dokumentasi Apple):

NSAllowsArbitraryLoads
  Nilai Boolean yang digunakan untuk menonaktifkan Keamanan Transportasi Aplikasi untuk domain apa pun yang tidak tercantum dalam kamus NSExceptionDomains. Domain yang terdaftar menggunakan pengaturan yang ditentukan untuk domain itu.

Nilai standar dari NO memerlukan perilaku Keamanan Aplikasi Transportasi default untuk semua koneksi.

Saya sangat menyarankan tautan:

yang membantu saya memahami alasan dan semua implikasinya.

XML (dalam file Info.plist) di bawah ini akan:

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

melarang panggilan sewenang-wenang untuk semua halaman, tetapi untuk PAGE_FOR_WHICH_SETTINGS_YOU_WANT_TO_OVERRIDE akan memungkinkan koneksi menggunakan protokol HTTP.

Untuk XML di atas, Anda dapat menambahkan:

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

jika Anda ingin mengizinkan koneksi tidak aman untuk subdomain dari alamat yang ditentukan.

Pendekatan terbaik adalah memblokir semua muatan sewenang-wenang (disetel ke false) dan menambahkan pengecualian untuk memungkinkan hanya alamat yang kami ketahui baik-baik saja.

Bagi pembaca yang tertarik


124
2017-09-01 12:10



Bagi Anda yang menginginkan lebih banyak konteks Mengapa ini terjadi, selain cara memperbaikinya, lalu baca di bawah.

Dengan diperkenalkannya iOS 9, untuk meningkatkan keamanan koneksi antara aplikasi dan layanan web, koneksi aman antara aplikasi dan layanan webnya harus mengikuti praktik terbaik. Perilaku praktik terbaik diberlakukan oleh Keamanan Transportasi Aplikasi untuk:

  • mencegah pengungkapan yang tidak disengaja, dan
  • memberikan perilaku default yang aman.

Sebagaimana dijelaskan dalam App Transport Security Technote, saat berkomunikasi dengan layanan web Anda, App Transport Security sekarang memiliki persyaratan dan perilaku berikut:

  • Server harus mendukung setidaknya protokol Transport Layer Security (TLS) versi 1.2.
  • Cipher koneksi terbatas pada yang menyediakan kerahasiaan ke depan (lihat daftar cipher di bawah.)
  • Sertifikat harus ditandatangani menggunakan SHA256 atau algoritme hash tanda tangan yang lebih baik, dengan kunci RSA 2048 bit atau lebih besar atau 256 bit atau   kunci Elliptic-Curve (ECC) yang lebih besar.
  • Sertifikat yang tidak valid menghasilkan kegagalan keras dan tidak ada koneksi.

Dengan kata lain, permintaan layanan web Anda harus: a.) Digunakan HTTPS dan b.) dienkripsi menggunakan TLS v1.2 dengan kerahasiaan ke depan.

Namun, seperti yang disebutkan di pos lain, Anda dapat mengganti perilaku baru ini dari Keamanan Transportasi Aplikasi dengan menentukan domain tidak aman di Info.plist dari aplikasi Anda.


Untuk mengganti, Anda harus menambahkan NSAppTransportSecurity > NSExceptionDomains properti kamus ke Anda Info.plist. Selanjutnya, Anda akan menambahkan domain layanan web Anda ke NSExceptionDomains kamus.

Misalnya, jika saya ingin melewati perilaku Keamanan Transportasi Aplikasi untuk layanan web pada host www.yourwebservicehost.com maka saya akan melakukan hal berikut:

  1. Buka aplikasi Anda di Xcode.

  2. Temukan Info.plist file di Project Navigator dan "kanan-mouse" klik di atasnya dan pilih Buka sebagai > Kode sumber pilihan menu. File daftar properti akan muncul di panel kanan.

  3. Masukkan properti berikut di dalam kamus properti utama (di bawah yang pertama <dict>).


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

Jika Anda perlu memberikan pengecualian untuk domain tambahan maka Anda akan menambahkan properti kamus lain di bawahnya NSExceptionDomains.

Untuk mengetahui lebih lanjut tentang kunci yang direferensikan di atas, baca technote yang sudah disebutkan ini.


112
2017-09-21 17:56



Saya tidak suka mengedit plist secara langsung. Anda dapat dengan mudah menambahkannya ke plist menggunakan GUI:

  • Klik pada Info.plist di Navigator di sebelah kiri.
  • Sekarang ubah data di area utama:

    • Di baris terakhir, tambahkan +
    • Masukkan nama grup: Setelan Keamanan Transportasi Aplikasi
    • Klik kanan pada grup dan pilih Add Row
    • Memasukkan Izinkan Beban Sewenang-wenang 
    • Setel nilai di sebelah kanan untuk IYA NIH

Example


64
2017-11-06 08:06



Apple Document 1

Apple Document 2

Ada dua solusi untuk ini:

Solusi 1: 

  1. Di Info.plist file tambahkan kamus dengan kunci 'NSAppTransportSecurity'
  2. Tambahkan elemen lain di dalam kamus dengan kunci 'Allow Arbitrary Loads'

Plist struktur akan muncul seperti yang ditunjukkan pada gambar di bawah.

Solution 1

Solusi 2:

  1. Di Info.plist file tambahkan kamus dengan kunci 'NSAppTransportSecurity'
  2. Tambahkan elemen lain di dalam kamus dengan kunci 'NSExceptionDomains'
  3. Tambahkan elemen dengan kunci 'MyDomainName.com' tipe NSDictionary
  4. Tambahkan elemen dengan kunci 'NSIncludesSubdomains'tipe Booleandan nilai ditetapkan sebagai YES
  5. Tambahkan elemen dengan kunci 'NSTemporaryExceptionAllowsInsecureHTTPLoads'tipe Booleandan nilai ditetapkan sebagai YES

Plist struktur akan muncul seperti yang ditunjukkan pada gambar di bawah.

Solution 2

Solusi 2 lebih disukai karena hanya mengizinkan domain yang dipilih sedangkan solusi 1 memungkinkan semua koneksi HTTP tidak aman.


23
2018-03-10 11:29



Keamanan transportasi tersedia di iOS 9.0 atau lebih baru. Anda mungkin memiliki peringatan ini ketika mencoba untuk memanggil WS di dalam aplikasi Anda:

Aplikasi Transport Security telah memblokir HTTP (http: //) beban sumber teks yang jelas karena tidak aman. Pengecualian sementara dapat dikonfigurasi melalui file Info.plist aplikasi Anda.

Menambahkan berikut ke Info.plist Anda akan menonaktifkan ATS:

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

20
2017-09-18 17:36



Contoh Pengembangan

Berikut adalah screenshot dari sebuah plist yang membuat ATS utuh (= aman), tetapi memungkinkan koneksi itu localhost dapat dilakukan melalui HTTP, bukan HTTPS. Ia bekerja di Xcode 7.1.1.

Enter image description here


14
2017-11-30 08:49