Перейти к содержанию

Возможность запуска произвольной Activity через Intent

Описание

В приложении Intent на запуск другого компонента может быть создан с указанием ComponentName.

Intent intent = new Intent();
intent.setComponent(
    new ComponentName("app.package", "app.package.SomeActivity")
);

Проблема

Если данные из сторонних источников (из Intent, общедоступных файлов, пользовательского ввода и т.п.) формируют ComponentName при создании Intent, то появляется возможность запустить любую Activity приложения через такой Intent, указав ее класс, даже если эта Activity является приватной.

Рекомендации

Приложение не должно использовать сторонние данные при формировании ComponentName в Intent для запуска компонентов Android.

Следует избегать ситуаций, когда Intent формируется за счет данных, полученных извне. Лучшим решением является передача "индексов", определяющих какой функционал следует использовать, вместо непосредственной передачи имен компонентов и других опасных данных.

Ссылки

  1. О Activity

  2. Описание Intent

К началу