Руководство по белому списку
Белый список доменов — это модель безопасности, которая контролирует доступ к внешним доменам, на которые у вашего приложения нет контроля. Cordova предоставляет настраиваемую политику безопасности для определения внешних сайтов, к которым может быть доступ. По умолчанию новые приложения настроены на разрешение доступа к любому сайту. Перед переходом вашего приложения в производство, вы должны сформулировать белый список и разрешить доступ к определённым доменам и поддоменам сети.
Для Android (начиная с версии 4.0), политика безопасности Cordova расширяется через интерфейс плагина. Ваше приложение должно использовать cordova-plugin-whitelist, так как он обеспечивает лучшую безопасность и настраиваемость, чем предыдущие версии Cordova. Хотя возможно реализовать свой собственный плагин белого списка, это не рекомендуется, если у вашего приложения нет очень специфических потребностей в политике безопасности. Обратитесь к cordova-plugin-whitelist для получения подробных сведений об использовании и настройке.
Для других платформ Cordova следует спецификации W3C Widget 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-in-media (логический тип, по умолчанию «false», новый в iOS 10)
- allows-arbitrary-loads-in-web-content (логический тип, по умолчанию «false», новый в iOS 10)
- allows-local-networking (логический тип, по умолчанию «false», новый в iOS 10)
-
пример:
<access origin='*' allows-arbitrary-loads-in-media='true' allows-arbitrary-loads-in-web-content='true' allows-local-networking='true' />
См. ATS Техническое примечание для получения дополнительных сведений.
Белый список для BlackBerry 10
Правила белого списка находятся в www/config.xml.
Использование подстановок в BlackBerry 10 отличается от других платформ двумя способами:
-
Любой доступ к контенту с помощью
XMLHttpRequestдолжен быть явно объявлен. Установкаorigin="*"в этом случае не работает. В качестве альтернативы, вся веб-безопасность может быть отключена с помощью параметраWebSecurity, описанного в настройках BlackBerry:<preference name="websecurity" value="disable" />
-
В качестве альтернативы установке
*.domain, задайте дополнительный атрибутsubdomainsвtrue. По умолчанию он должен быть установлен вfalse.<!-- Narrows access to google.com --> <access origin="http://google.com" subdomains="false" /> <!-- Allows access to maps.google.com and docs.google.com --> <access origin="http://google.com" subdomains="true" /> <!-- Allows access to all domains, including the local `file://` protocol --> <access origin="*" subdomains="true" />
Для получения дополнительной информации обратитесь к документации BlackBerry по элементу доступа.
Белый список для Windows Phone
Правила белого списка для Windows Phone 8 находятся в файле приложения config.xml.
© 2012, 2013, 2015 The Apache Software Foundation
Licensed under the Apache License 2.0.
https://cordova.apache.org/docs/en/6.x/guide/appdev/whitelist/index.html