Какие проблемы безопасности может вызвать SendBroadcast и какой подход лучше? - PullRequest
4 голосов
/ 03 апреля 2012

И снова у меня есть вопрос, который снова связан с Android.Это просто для меня, чтобы получить более полное представление о том, как отправлять трансляции.

То, что я хотел бы знать, это:

1.Зачем использовать широковещательный приемник над действиями для результата?
Я думал, что широковещательный приемник будет более полезен для обработки реальных сообщений устройства, чем просто для передачи намерений в приложении.

2.С какими проблемами безопасности может столкнуться разработчик?
Прав ли я, если предположу, что любой, кто знает имя моего пакета (возможно, с помощью реверс-инжиниринга), может в основном перехватить отправленные намерения и просмотреть информацию, переданную с ним?

3.Что хорошего в LocalBroadcastManager, если вы хотите передавать объекты другим действиям?
Я читал, что это может быть лучше, если вы не хотите, чтобы отправленные намерения просачивались за пределы приложения.Означает ли это также, что даже если у кого-то есть имя пакета, которое он все еще не может получить в эфир за пределами приложения?

Если вы считаете, что мои вопросы не завершены или основаны на ошибочных предположениях, пожалуйста, дайте мне знать, так чтоЯ могу учиться на этом.:)

Большое спасибо всем, кто может помочь.

Приветствия,

Do

1 Ответ

8 голосов
/ 03 апреля 2012

1) Приемники вещания - это механизм для получения сообщений (намерений) в глобальном масштабе без использования какого-либо пользовательского интерфейса.Они полезны для передачи информации между различными компонентами, такими как Service, Activity или даже BroadcastReceiver.Они могут быть определены в манифесте для прослушивания определенных действий и выполнения каких-либо действий (например, запуска службы / активности), даже если ваше приложение не запущено.Однако в activityForResult ваше приложение (действие) должно быть запущено, чтобы получать результаты, которые могут не подходить постоянно.

2) Да, если известна ваша строка действия для других приложений ваши трансляции будут доступны любому получателю, который прослушивает эти конкретные действия.Чтобы избежать этого, используйте LocalBroadcastManager .

3) Использование LocalBroadcastManager - лучший способ повысить конфиденциальность, гарантируя, что ваша трансляция будет транслироваться и прослушиваться только в вашей контекст приложения .Другие приложения не могут прослушивать такие трансляции, так как они имеют собственный контекст и не знают контекста вашего приложения.

Согласно документам Google для LocalBroadcastManager :

  • Вы знаете, что передаваемые вами данные не будут покидать ваше приложение, поэтому вам не нужно беспокоиться о утечке личных данных.
  • Другие приложения не могут отправлять эти трансляции в ваше приложение,так что вам не нужно беспокоиться о наличии дыр в безопасности, которые они могут использовать.
  • Это более эффективно, чем отправка глобальной трансляции через систему

Заключительные слова: Есливам нужно транслировать сообщения в вашем приложении и не хотите отправлять их глобально, тогда LocalBroadcastManager - лучший выбор.В противном случае идти обычным путем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...