Руководство по белому списку
Белый список доменов — это модель безопасности, которая контролирует доступ к внешним доменам, на которые у вашего приложения нет контроля. Cordova предоставляет настраиваемую политику безопасности для определения, к каким внешним сайтам можно получить доступ. По умолчанию новые приложения настроены на разрешение доступа ко всем сайтам. Перед переходом приложения в производство вы должны сформулировать белый список и разрешить доступ к конкретным доменам и поддоменам сети.
Для Android (начиная с версии 4.0) политика безопасности Cordova расширяется через интерфейс плагина. Ваше приложение должно использовать плагин cordova-plugin-whitelist, так как он обеспечивает лучшую безопасность и настраиваемость, чем более ранние версии Cordova. Хотя реализация собственного плагина белого списка возможна, это не рекомендуется, если у вашего приложения нет очень специфических потребностей в политике безопасности. Подробнее об использовании и конфигурации см. в cordova-plugin-whitelist.
Для других платформ Cordova придерживается спецификации W3C Widget Access http://www.w3.org/TR/widgets-access/, которая опирается на элемент <access> в файле config.xml приложения для разрешения сетевого доступа к определённым доменам. Для проектов, которые полагаются на рабочий процесс CLI, описанный в Интерактивном интерфейсе командной строки, этот файл находится в корневой директории проекта. В противном случае пути к файлам для платформ указаны в разделах ниже.
Следующие примеры демонстрируют синтаксис белого списка <access>:
-
Доступ к google.com:
<access origin="http://google.com" />
-
Доступ к защищенному google.com (
https://):<access origin="https://google.com" />
-
Доступ к поддомену maps.google.com:
<access origin="http://maps.google.com" />
-
Доступ ко всем поддоменам на google.com, например, mail.google.com и docs.google.com:
<access origin="http://*.google.com" />
-
Доступ ко всем доменам, например, google.com и developer.mozilla.org:
<access origin="*" />
Это значение по умолчанию для вновь созданных проектов CLI.
Обратите внимание, что некоторые веб-сайты могут автоматически перенаправлять с главной страницы на другой URL, например, используя протокол https или домен, специфичный для страны. Например, http://www.google.com будет перенаправлен на использование SSL/TLS по адресу https://www.google.com, а затем может быть перенаправлен на географию, такую как https://www.google.co.uk. Такие сценарии могут потребовать изменённых или дополнительных записей в белом списке, помимо первоначальных требований. Пожалуйста, учитывайте это при создании белого списка.
Обратите внимание, что белый список применяется только к основному веб-вью Cordova и не применяется к веб-вью InAppBrowser или открытию ссылок в системном веб-браузере.
Белый список Android
Как указано выше, см. cordova-plugin-whitelist для получения подробностей. Для cordova-android версии до 4.0.0 см. более старые версии документации.
Белый список iOS
Cordova-ios версии 4.0 и выше не требует установки плагина cordova-plugin-whitelist, однако его параметры конфигурации также применяются к iOS. Теги <allow-intent> и <allow-navigation> являются новыми для cordova-ios 4.x и выше. Для получения подробной информации об использовании этих тегов см. документацию cordova-plugin-whitelist.
Для версий cordova-ios до 4.0.0 см. более старые версии документации.
Безопасность транспортного протокола (ATS) является новой функцией iOS 9 (Xcode 7). Эта новая функция работает как белый список для вашего приложения. Cordova cli автоматически преобразует теги <access> и <allow-navigation> в соответствующие директивы ATS.
Теги <access> и <allow-navigation> поддерживают следующие три атрибута ниже, которые имеют свои эквиваленты в ATS:
- minimum-tls-version (Строка, по умолчанию 'TLSv1.2')
- requires-forward-secrecy (Булево значение, по умолчанию 'true')
- requires-certificate-transparency (Булево значение, по умолчанию 'false', ново в iOS 10)
-
пример:
<access origin='https://cordova.apache.org' minimum-tls-version='TLSv1.1' requires-forward-secrecy='false' requires-certificate-transparency='true' />
В iOS 10 и выше, тег <access> поддерживает три атрибута ниже, в сочетании с подстановкой источника *. Эти атрибуты также имеют свои эквиваленты в ATS:
- allows-arbitrary-loads-for-media (Булево значение, по умолчанию 'false', ново в iOS 10. Новое в cordova-ios@4.5.0, исправлено для использования правильного имени атрибута). Старый атрибут
allows-arbitrary-loads-in-mediaтеперь устарел. - allows-arbitrary-loads-in-web-content (Булево значение, по умолчанию 'false', ново в iOS 10)
- allows-local-networking (Булево значение, по умолчанию 'false', ново в iOS 10)
-
пример:
<access origin='*' allows-arbitrary-loads-for-media='true' allows-arbitrary-loads-in-web-content='true' allows-local-networking='true' />
Для получения дополнительной информации см. Техническую заметку ATS.
© 2012, 2013, 2015 The Apache Software Foundation
Licensed under the Apache License 2.0.
https://cordova.apache.org/docs/en/8.x/guide/appdev/whitelist/index.html