Категория > Новости > Android: ошибки работы с разрешениями и библиотека Security-App-Authenticator - «Новости»
Android: ошибки работы с разрешениями и библиотека Security-App-Authenticator - «Новости»5-09-2021, 00:00. Автор: Сильвия |
|
Common mistakes when using permissions in Android — статья об ошибках, которые допускают разработчики при декларации собственных разрешений. Преамбула: в Android есть система разрешений (permissions). Разрешения могут быть уровня normal (они предоставляются без вопросов), dangerous (приложение обязано запросить разрешение у пользователя), signature (приложение должно быть подписано тем же ключом, что и компонент, предоставляемый по разрешению) и нескольких других системных типов, используемых только приложениями из комплекта прошивки. Кроме того, приложения могут декларировать свои собственные разрешения, которые должны использовать другие приложения для доступа к возможностям этого приложения (запускать активности, получать данные из content provider’ов и так далее). Декларация таких разрешений в манифесте выглядит примерно так: <permission android:name="com.mycoolcam.USE_COOL_CAMERA" android:protectionLevel="dangerous" /><activity android:name=".CoolCamActivity" android:exported="true" android:permission="com.mycoolcam.USE_COOL_CAMERA"> <intent-filter><action android:name="com.mycoolcam.LAUNCH_COOL_CAM" /><category android:name="android.intent.category.DEFAULT" /> intent-filter>activity>Сейчас доступ к активности А теперь ошибки, которые совершают разработчики, когда декларируют свои разрешения и защищают ими компоненты:
РазработчикуБиблиотека Security-App-AuthenticatorHands on with Jetpack’s Security App Authenticator library — небольшая заметка о новой библиотеке в комплекте Android Jetpack. Библиотека нужна для проверки подлинности сертификатов приложений, с которыми будет контактировать твое приложение. Делается это с помощью сверки контрольной суммы сертификата приложения и его сравнения с уже сохраненным списком контрольных сумм. Этакий SSL Pinning для приложений. Перед тем как использовать библиотеку, в каталог подкаталоге <?xml version="1.0" encoding="utf-8"?><app-authenticator> <expected-identity><package name="com.example.app"><cert-digest>7d5ac0f764d5ae47a051777bb5fc9a96f30b6b4d3bbb95cddb1c32932fb28b10cert-digest>package> expected-identity>app-authenticator>Этот файл говорит, что приложение с именем пакета Далее можно начать использовать библиотеку: // Создаем экземпляр аутентификатора из описанного выше XML-файлаval authenticator = AppAuthenticator.createFromResource(context, R.xml.expected_app_identities)// Первый способ проверки сертификатаval result = when (authenticator.checkAppIdentity("com.example.app")) { AppAuthenticator.SIGNATURE_MATCH -> "Signature matches" AppAuthenticator.SIGNATURE_NO_MATCH -> "Signature does not match" else -> return}// Второй способ проверки с выбросом исключенияtry { authenticator.enforceAppIdentity("com.example.app) // ...работаем с приложением} catch (e: SecurityException) { // ...не стоит доверять этому приложению}Как видно, есть несколько способов проверки. Первый удобно использовать для простых проверок. Второй удобен для использования в функциях работы с проверяемым приложением. Просто добавляем в их начало проверку, и все остальное сделает система обработки исключений. Перейти обратно к новости |