Выбор ответа Senior Навигация, координаторы и deep links обновлено

Безопасность deep links

Вопрос

Почему параметры deep link нужно валидировать так же, как ввод пользователя?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

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

Варианты ответа

  1. Иначе ссылка не откроется на Android 14: система блокирует intent с непроверенными параметрами
  2. Параметры deep link приходят в кодировке Base64, и без проверки их декодирование может уронить приложение при запуске
  3. Ссылку может сформировать кто угодно: ею открывают служебные экраны, подставляют чужие id, делают действияправильный ответ
  4. Валидация нужна только для ссылок из push-уведомлений, остальные приходят из проверенного домена

Разбор

Deep link это внешний вход в приложение. Нельзя по ссылке сразу выполнять действие (перевод, подписку, удаление): нужно открыть экран и попросить подтверждение. Доступ к данным проверяет сервер, а клиент проверяет формат параметров и не открывает внутренние или отладочные экраны. На Android дополнительно важно не экспортировать лишние Activity и проверять intent. Источник ссылки не делает её доверенной.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме