Автозаполнение в Android 8.0 Oreo и безопасность данных

Автозаполнение — функция, которая автоматически подставляет данные в формы, помогая экономить время.

До недавнего времени под автозаполнением чаще всего подразумевалась связка «браузер — сайт», но после выхода обновлений Android 8.0 Oreo и iOS11 автозаполнение заработало в мобильных приложениях. К iOS ещё вернёмся, а сейчас — речь об Android.

Как работает автозаполнение в Android?

Данные пользователя запрашиваются приложениями через API. Из приложения с формой Android отправляет данные сервису, который в ответ предлагает информацию для автозаполнения и сохраняет новые данные на будущее. Схематично автозаполнение в Android 8.0 Oreo можно представить следующим образом:

  1. Приложение, с которым работает пользователь
  2. Сервис автозаполнения
  3. Android, как посредник между ними
Схема работы автозаполнения в Android

Источник: github.com/commonsguy

Удобнее и быстрее

Автозаполнение ускоряет заполнение форм на 30%. Мы к этому добавим и упрощение авторизации в приложениях — API автозаполнения позволяет использовать сервисы, которые автоматически создают и хранят пароли, которые не придётся запоминать.

Особенно актуально это может показаться после проблемы с клавиатурой Ai.Type. Пользователям больше не придётся вводить свои пароли и бояться, что они утекут в открытый доступ.

Угроза безопасности

Но существует серьезная уязвимость — попутно с видимыми полями автоматически заполняются скрытые:

  • помеченные как невидимые (android:visibility=»invisible»);
  • с нулевым (width и height 0dp) или неразличимым (width и height of 1dp) размером;
  • с отрицательными значениями margin, сдвигающими поля за пределы экрана;
  • спрятанные под другими, видимыми (смещение по оси Z).

Воспроизведение проблемы есть на GitHub. Сами инженеры по безопасности Google признают, что надёжной защиты от такой угрозы пока нет.

Как защитить данные

По умолчанию в Android 8.0 Oreo включен сервис автозаполнения от Google, но можно поставить другие или отключить опцию.

Чтобы выключить автозаполнение, перейдите в Настройки → Система → Язык и ввод → Автозаполнение. По тапу на пункт откроется выбор поставщика сервиса:

Выбор и выклбючение автозаполнения в Android

Выберите «Нет», чтобы выключить автозаполнение.

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

1. Сегментация данных

Запросы автозаполнения можно разбивать на сегменты и передавать по отдельности. Например:

  • адрес и телефон;
  • данные кредитки;
  • логин и пароль.

Допустим, в форме есть: адрес, номер телефона и детали кредитной карты. Вместо того, чтобы отдавать сразу все данные:

  • определяется выбранное поле;
  • уточняется, к какому сегменту относится (адрес+телефон или кредитка);
  • отдаются только эти данные.

2. Отказ от переиспользования конфиденциальных данных

Google рекомендует не переиспользовать автозаполнение логина и пароля из одного приложения в другом, а заполнять отдельно для каждого. Для этого используется applicationId («package») и публичный ключ приложения.

3. Идентификация пользователя перед автозаполнением

Каждая отправка данных может подтверждаться сканером отпечатка или глобальным паролем.

Подробнее — на developer.android.com.

Использовать или нет?

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