#ios #autofill
#iOS #автозаполнение
Вопрос:
Как Apple гарантирует, что хакеры не смогут использовать поддельные приложения с поддельными доменами для работы с функцией автозаполнения пароля iOS?
Например, если хакер создает приложение со своим доменом как linkedin.com пользователь может использовать функцию автозаполнения пароля, и поддельное приложение пройдет linkedin.com в качестве идентификатора службы для расширения автозаполнения.
Я нашел некоторую документацию о том, как работают связанные домены для universal link, чтобы убедиться, что аутентичность идентификатора службы или домена гарантирована.
Вот ссылка на документ, который я прочитал: https://developer.apple.com/documentation/security/password_autofill/setting_up_an_app_s_associated_domains
Также, если автозаполнение пароля использует тот же механизм, что и universal link, и с соответствующими доменами в приложении, позволяющем использовать несколько доменов. к какому домену подключится расширение автозаполнения, когда мы попытаемся использовать расширение автозаполнения в собственном приложении?
Ответ №1:
Между приложением и веб-сайтом существует двусторонняя связь.
Приложение перечисляет связанные с ним домены в info.plist
файле. Веб-сайт в соответствующем домене предоставляет идентификаторы пакета поддерживаемых приложений в apple-app-site-association
файле.
Для того, чтобы автозаполнение пароля работало, обе части ссылки должны быть на месте.
Рассматривая пример, который вы предложили для linkedin.com .
- Злоумышленник может опубликовать приложение, которое указано
linkedin.com
в качестве связанного домена. - У приложения есть идентификатор пакета, скажем,
com.badapple.trickyapp
- Этот идентификатор пакета не будет указан в linkedin.com
apple-app-site-association
файл, потому что злоумышленник не имеет возможности изменить этот файл; Он контролируется linkedin. - Поскольку совпадения нет, автозаполнение не будет запущено автоматически.
Как насчет другого способа?
- The linkedin.com
apple-app-site-association
будет содержать идентификатор пакета для их приложения, скажем,com.linkedin.app
. - Злоумышленник не может опубликовать приложение с этим идентификатором пакета, потому что в магазине уже есть приложение с этим идентификатором (официальное приложение LinkedIn), поэтому им приходится использовать другой идентификатор пакета.
- Кроме того, идентификатор пакета должен включать идентификатор команды, поэтому могут совпадать только приложения из команды LinkedIn
- Это возврат к первому случаю; автозаполнения нет
По сути, для запуска автозаполнения вам нужен контроль как над приложением, так и над содержимым веб-сайта.
Если в приложении указано несколько доменов и установлены соответствующие ассоциации сайтов, то iOS предложит несколько вариантов пароля на панели быстрого ввода. Если в связке ключей (или любом другом поставщике паролей, который использует пользователь) больше совпадений, они могут использовать кнопку «пароли …», чтобы просмотреть все совпадения в табличном виде и выбрать соответствующие данные учетной записи.
Комментарии:
1. Потрясающе!! Большое спасибо, Пол, за подробное объяснение.
2. Еще один вопрос к моему приложению, которое имеет 3 связанных домена, например: ссылки на приложения: test.domain1.com ссылки на приложения: test.domain2.com ссылки на приложения: test.domain3.com . Но мое приложение для автозаполнения пароля получает только 1 идентификатор службы, и это тоже serviceIdentifier.identifier только как «domain3.com «. Пока я ожидаю все 3. Я тоже имею в виду этот вызов: developer.apple.com/documentation/authenticationservices /…