Рекомендации по обеспечению защиты для разработчиков

Adobe AIR 1.0 и более поздних версий

Хотя приложения AIR основаны на веб-технологиях, разработчики должны иметь в виду, что эти приложения не работают в изолированной программной среде безопасности обозревателя. Это значит, что можно создать приложения AIR, которые могут причинить преднамеренный или случайный вред локальной системе. AIR старается свести такой риск к минимуму, но приложения все-таки могут иметь уязвимые места. В данном разделе описаны важные потенциальные угрозы защите.

Риск при импорте файлов в изолированную программную среду безопасности приложения

Файлы, существующие в каталоге приложения, входят в изолированную программную среду приложения и имеют полный набор привилегий среды выполнения. Приложения, записывающие в локальную файловую систему, как правило, выполняют запись в каталог app-storage:/ . Этот каталог существует отдельно от файлов приложения на компьютере пользователя, поэтому его файлы не входят в изолированную программную среду приложения и не представляют большой угрозы безопасности. Разработчикам следует учитывать следующие моменты:

  • Помещайте файл в файл AIR (в установленное приложение) только при необходимости.

  • Помещайте файл сценария в файл AIR (в установленное приложение), только если его поведение является полностью понятным и доверенным.

  • Не выполняйте запись в каталог приложения и не изменяйте его содержимое. Среда выполнения запрещает приложениям выполнять запись или изменять файлы и каталоги при помощи схемы URL-адресов app:/ и выдает при этом исключение SecurityError.

  • Не используйте данные из сетевого источника в качестве параметров для методов API-интерфейса AIR, которые могут привести к выполнению кода. Сюда относится использование метода Loader.loadBytes() и функции JavaScript eval() .

Риск при использовании внешнего источника для определения путей

Приложение AIR может быть подвергнуто риску при использовании данных или содержимого из внешнего источника. По этой причине будьте очень осторожны при использовании данных из сети или файловой системы. Ответственность за доверие лежит исключительно на разработчиках и создаваемых ими сетевых подключениях, но загрузка внешних данных изначально опасна. Не рекомендуется использовать ввод таких данных в чувствительных операциях. Разработчикам не рекомендуется следующее:

  • Использовать данные из источника в сети для определения имени файла.

  • Использовать данные из источника в сети для формирования URL-адреса, по которому приложение отправляет конфиденциальную информацию.

Риск при использовании, хранении или передаче небезопасных учетных данных

Хранение учетных данных пользователя в локальной файловой системе пользователя повышает риск их неправомочного использования. Разработчикам следует учитывать следующие моменты:

  • Шифруйте учетные данные при их записи в локальную файловую систему, если требуется хранить эти данные локально. Среда выполнения предоставляет зашифрованное хранилище, уникальное для каждого установленного приложения, посредством класса EncryptedLocalStore. Дополнительные сведения см. в разделе « Зашифрованная локальная система хранения данных ».

  • Не передавайте незашифрованные учетные данные пользователей сетевому источнику, если он не является надежным и для передачи не используется протокол HTTPS или TLS (Transport Layer Security).

  • Никогда не указывайте пароль по умолчанию при создании учетных данных. Позвольте пользователю создать свой пароль. Пользователи, использующие пароль по умолчанию, не изменяя его, подвергаются риску атаки со стороны злоумышленников, которым известен пароль по умолчанию.

Риск атак на устаревшие версии

Во время установки приложения среда выполнения проверяет, не установлена ли уже версия приложения. Если данное приложение уже установлено, среда выполнения сравнивает строку версии установленного приложения с версией устанавливаемого приложения. Если версии разные, пользователь может выбрать обновление установки. Среда выполнения не гарантирует, что устанавливаемая версия приложения является более новой, чем предыдущая. Она проверяет только отличие версий. Нарушитель защиты может предложить пользователю устаревшую версию, чтобы ослабить защиту. По этой причине разработчикам рекомендуется осуществлять проверку версии при запуске приложения. Рекомендуется, чтобы приложения выполняли проверку наличия необходимых обновлений в сети. Таким образом, даже если по вине нарушителя защиты пользователь запустит устаревшую версию, при проверке версии выяснится, что требуется ее обновление. Кроме того, использование более ясной схемы определения версии приложения снизит риск установки пользователями устаревшей версии обманным путем.