Так что я заметил, что нет варианта startService(), который принимает разрешение. Разве это не опасно?startService() с разрешениями
Я представил себе следующий простой сценарий атаки:
- APPA называет StartService с помощью явного намерения на «myApp.serviceClass». Этот класс сервиса должен быть экспортирован в AppB, который должен быть установлен отдельно.
- Злоумышленник может создать вредоносную версию AppB. Последний будет экспортировать «myApp.serviceClass» в качестве службы, а затем захватить данные, которые включены в намерение, когда AppA вызывает startService().
Я что-то упустил? Я ожидал какой-то вариант startService(), который требует, чтобы целевое приложение обладало определенным разрешением, как это делает sendBroadcast (намерение, разрешение). Как вы могли бы предотвратить такое вмешательство?
Спасибо!
Если appa и appb принадлежат одному издателю, общий идентификатор пользователя разрешит это. – njzk2
@ njzk2: Во-первых, я не вижу, как это решит это. Во-вторых, 'sharedUserId' серьезно рискован для обычных разработчиков SDK, как только он установлен, вы никогда не сможете его изменить. – CommonsWare
@ njzk2: Интересно, не могли бы вы объяснить это дальше, пожалуйста? – Knight