Почему нужно добавить `NSAppTransportSecurity` и добавить ключ`NSAllowsArbitraryLoads` в `YES`?

В прежние времена, когда я хочу получить данные, не нужно было добавлять NSAppTransportSecurityустановить NSAllowsArbitraryLoads ключ к YES в info.plistНо теперь, если вы собираетесь запускать свое приложение по сети, оно должно быть добавлено.

Почему это требуется? Насколько это полезно? Какая польза от этого?

Кто-нибудь может помочь, пожалуйста?

1 ответ

Решение

App Transport Security была представлена ​​с iOS9 как дополнительная функция безопасности при подключении вашего приложения к сети.

Из документации Apple:

App Transport Security - это функция, которая повышает безопасность соединений между приложением и веб-службами. Эта функция состоит из требований к соединению по умолчанию, которые соответствуют рекомендациям по безопасным соединениям. Приложения могут переопределить это поведение по умолчанию и отключить транспортную безопасность.

Одним из требований является то, что все соединения должны использовать HTTPS. Вот почему все соединения, которые используют только HTTP, потерпят неудачу на iOS9.

Если вы используете службу, которая недоступна через HTTPS, вы все равно можете использовать ее, переопределив App Transport Security. Вот что NSAppTransportSecurity словарь в вашем Info.plist файл для. Там вы можете определить, какое требование безопасности транспорта приложения вы хотите переопределить.

Например NSAllowsArbitraryLoads отключает все требования безопасности для любых доменов. Вы можете определить исключения в NSExceptionDomains словарь, но если вы этого не сделаете, всем доменам будет разрешено подключаться к вашему приложению без App Transport Security.

Если вы хотите подключиться к одному домену, который не использует HTTPS, вы не должны использовать NSAllowsArbitraryLoads потому что это отключает всю безопасность для всех доменов. Вместо этого вы должны специально переопределить требование HTTPS только для этого одного домена.

Вы можете сделать это так в своем Info.plist файл:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>yourdomain.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

Подводя итоги: App Transport Security - это хорошая вещь, потому что она поощряет вас использовать HTTPS-соединения, которые более безопасны, чем обычные HTTP-соединения. Поскольку вы не всегда можете использовать HTTPS, он дает вам возможность разрешать небезопасные соединения. Рекомендуется использовать эти переопределения безопасности только там, где они вам нужны.

Другие вопросы по тегам