license: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing,
     software distributed under the License is distributed on an
     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     KIND, either express or implied.  See the License for the
     specific language governing permissions and limitations
     under the License.

Инструкция по доступу к внешним ресурсам

Список разрешенных доменов это модель безопасности, которая контролирует доступ во внешние домены, к которому ваше приложение не имеет доступа. Политика безопасности по умолчанию для Cordova позволяет получить доступ к любому сайту. Прежде чем переносить приложение для рабочую среду, следует сформулировать список разрешений и разрешить доступ к определенным сетевым доменам и поддоменам.

Cordova следует спецификации W3C Доступ виджета, которая опирается на элемент <access> в файле config.xml приложения, чтобы включить сетевой доступ к отдельным доменам. Для проектов которые погалаются на процесс с использованием командной строки, описанный в разделе “Интерфейс командной строки”, этот файл расположен в корневой папке проекта. В противном случае при использовании пути разработки с использованием платформо-ориентированного кода, места расположения указаны в разделах ниже. (См. различные руководства платформ для получения дополнительной информации на каждой платформе.)

В следующих примерах демонстрируется синтаксис белый список:

  • Доступ к 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.

Список разрешений Amazon Fire OS

Список разрешений расположен вres/xml/config.xml.

Список разрешений Android

Список разрешений расположен вres/xml/config.xml.

Замечание: Для Android 2.3 или ранее, список разрешения работает только для ссылок href, а не для добавленных ресурсов, таких как изображения и скрипты. Принимайте шаги, чтобы исключить добавление скриптов в приложение.

Примечание: для того, чтобы предотвратить внешние URL-адреса, такие как mailto: от открытия в Cordova webview по состоянию на Cordova 3.6.0, указав origin="*" будет запрещена добавить правила для протоколов http и https. Если вам требуется доступ к дополнительные пользовательские протоколы, то вам следует также добавить их явным образом в белый список. Также смотрите «Внешние приложение Whitelist» ниже для получения дополнительной информации на запуск внешних приложений по URL-адресу.

Примечание: некоторые сетевые запросы не проходят через Cordova Whitelist. Это включает в себя < видео > и < аудио > resouces, соединений WebSocket (на Android 4.4 +) и возможно, других не http-запросов. На андроид 4.4 + вы можете включить заголовок CSP в HTML-документы для ограничения доступа к этим ресурсам. На более старых версиях Android ограничить их не возможно.

Внешнее приложение Whitelist

Кордова 3.6.0 вводит второй белый, для ограничения которого URL-адресов для запуска внешних приложений. В предыдущих версиях Cordova, всех не http URL-адресов, таких как mailto: , geo: , sms: и intent , неявно разрешалось быть объектом тег. Из-за возможности приложения к утечке информации если XSS уязвимость позволяет злоумышленнику для построения произвольных связей, эти URL-адреса должны быть whitelisted, начиная в Кордове 3.6.0.

Чтобы шаблон URL-адреса для запуска внешнего приложения, используйте тег в ваш config.xml файл, с launch-external набор атрибутов.

Примеры:

  • Чтобы разрешить ссылки для отправки SMS-сообщений:

  • Чтобы разрешить ссылки для открытия карты:

  • Чтобы разрешить ссылки на example.com для открытия во внешнем браузере:

  • Чтобы разрешить все веб-сайты не whitelisted открыть во внешнем браузере: (это так же, как предыдущее поведение для URL-адресов не белый)

  • Чтобы разрешить доступ ко всем URL, возврат к политике Cordova 3.5.0 (не рекомендуется):

При переходе к URL из вашего приложения, сначала проверяется interal whitelist, и если URL-адрес не является whitelisted там, затем проверяется внешний белый. Это означает, что любой http: или https: URL-адреса, которые соответствуют как белые будет открыт внутри Cordova-приложение, вместо того, чтобы запуск внешнего браузера.

Список разрешений iOS

Список разрешения для платформы может быть найден в файле config.xml расположенном в каталоге с именем приложения.

Ресурсы указанные без протокола, как например www.apache.org в отличие от http://www.apache.org, по умолчанию разрешают доступ ко схемам http, https, ftp, и ftps.

Шаблоны на платформе iOS более гибкие, чем в спецификации W3C Доступ виджета. К примеру, следующая конструкция разрешает доступ к всем поддоменам и доменам верхнего уровня, как например .com и .net:

    <access origin="*.google.*" />

В отличие от платформы Android упомянутой выше, попытка перехода к домену не указанному в списке разрешений через ссылку href, на iOS предотвращает открытие страницы полностью.

Список разрешений BlackBerry 10

Разрешающие правила могут быть найдены в www/config.xml.

Использование шаблонов в BlackBerry 10 отличается от остальных платформы двумя способами:

  • Любой контент, к которому получается доступ с использованием XMLHttpRequest должн быть объявлен явным образом. Установка origin="*" в этом случае не работает. Как вариант, веб-безопасность можно отключить с помощью параметра WebSecurity, описанном в разделе Настройка BlackBerry:

    <preference name="websecurity" value="disable" />
    
  • Как альтернатива параметру *.domain , установите дополнительный атрибут subdomains со значением true . Он установлен в false по умолчанию. Например, следующее описание позволяет получить доступ к google.com , maps.google.com , и docs.google.com :

    <access origin="http://google.com" subdomains="true" />
    

    А следующее описание ограничивает доступ до google.com :

    <access origin="http://google.com" subdomains="false" />
    

    Укажите доступ ко всем доменам, в том числе для протокола локальной файловой системы file://:

(За более подробной информацией о поддерживаемых функциях, смотрите документации BlackBerry по тегу access.)

Изменения для iOS в версии 3.1.0

До версии 3.1.0, Cordova-iOS включала некоторые нестандартные расширений к списку разрешенных доменов поддерживаемым остальными платформами Cordova. Начиная с 3.1.0, список разрешенных доменов для iOS соотвествует синтаксису списка разрешенных доменов описанному в начале этого документа. Если вы обновляетесь с версии до 3.1.0, и вы использовали эти разширения, вам возможно понадобиться изменить ваш config.xml файл для того чтобы продолжить разрешать доступ к тому же набору ресурсов что и ранее.

Точнее, эти шаблоны должны быть обновлены:

  • apache.org(без протокола): это значение ранее указывало на возможность использования протоколов http , https , ftp , и ftps. Измените на « *://apache.org/* » чтобы включить все протоколы, или включите строку для каждого протокола, который необходимо поддерживать.

  • http://apache.*(подстановочный знак в конце домена): это ранее обеспечивало совпадение с любыми доменами верхнего уровня, включая все возможные комбинации ДВУ из двух букв (но не полезные домены как .co.uk). Включить строку для каждого TLD, который вы фактически контролируете и к которому необходимо предоставить доступ.

  • h*t*://ap*he.o*g(подстановочные знаки для случайных недостающие буквы): они больше не поддерживаются; измените файл и включить строку для каждого домена и протокола, что вам действительно необходим в списке разрешений.

Список разрешений Windows Phone

Белый список правил для Windows Phone 8 находятся в app config.xml файл.

Список разрешений Tizen

Списки разрешающий правил находятся в файле приложения config.xml. Платформа рассчитывает на тот же атрибут subdomains что и платформа BlackBerry. (За более детальной информацией о поддерживаемых функциях, смотрите документацию Tizen по тегу access.)