2

Недавно я просмотрел код в своем исходном коде Android, используя службу HPFortify. Они сообщили об уязвимости в отношении одного из широковещательных приемников и отправителя. Передатчик и получатель широковещательных сообщений являются внутренними для приложения, и намерение не отправляется за пределы приложения. Они в основном используются для внутренней связи. HPFortify предложила использовать разрешение телевещательной компании, чтобы уменьшить вектор атаки. Таким образом, вы ограничиваете вещательную компанию, иначе любое вредоносное приложение может отправить намерение, и широковещательный приемник обработает его. Аналогичным образом они предложили использовать разрешение приемника, чтобы переданное намерение было получено предполагаемым приемником. Этот вещатель и приемник являются внутренними для приложения, а другое приложение не использует это намерение. Вот мой фактический код для вещательной:приватные разрешения отправителя и получателя на передачу

Intent updatedIntent = new Intent("SOME-ACTION"); 
Context context = getAppContext(); 
context.sendBroadcast(updatedIntent); 

Я динамически регистрации приемника широковещательной передачи, используя следующий фрагмент кода.

this.registerReceiver(updatedReceiver, 
new IntentFilter("SOME-ACTION")); 

HPFortify предполагает, что использование sendBroadcast с примером разрешения строки:

Intent updatedIntent = new Intent("SOME-ACTION"); 
Context context = getAppContext(); 
context.sendBroadcast(updatedIntent, "SOME-PERMISSION"); 

Аналогично для вещательного приемника:

this.registerReceiver(updatedReceiver, 
    new IntentFilter("SOME-ACTION"), 
    "SOME-PERMISSION", null); 

Я не знаю, как определить это разрешение и использовать его в вещателе и широковещательном приемнике. Мне нужно определить личное разрешение в AndroidManifest.xml и использовать его здесь?

+1

Вы используете LocalBroadCastManager? менеджер локального вещания не позволяет другому приложению отправлять намерения трансляции вашему приложению. реверанс android разработчик dot com. «Невозможно, чтобы другие приложения могли отправлять эти трансляции в ваше приложение, поэтому вам не нужно беспокоиться о наличии дыр в безопасности, которые они могут использовать». – mcd

+0

Нужно ли мне определять какие-либо разрешения или просто использовать этот класс напрямую? – Rakesh

+0

по мне и андроидному сайту :-). нет необходимости определять разрешение, если вы используете localbroadcastmanager. http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html. google это, например, – mcd

ответ

3

Если вам нужно транслировать в приложении, используйте LocalBroadCastManager, потому что локальный диспетчер радиовещания никогда не передает трансляцию трансляции вне текущего процесса.

И если вы хотите, чтобы другие приложения могли получать или отправлять ваши трансляции, используйте BroadCastManager, и вам необходимо применить разрешения на использование (пользовательское разрешение пользователя).

для получения дополнительной информации см. Ниже Документация на Android для широковещательного приемника, в котором содержится подробная информация о безопасности в разделе безопасности.

http://developer.android.com/reference/android/content/BroadcastReceiver.html

0

Нужно ли мне определять личное разрешение в AndroidManifest.xml и использовать его здесь?

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

+0

Должен ли я использовать разрешение, если я использую 'LocalBoadCastManager'? – Rakesh

+0

@ Разрешение F43nd1r необходимо только в том случае, если вы хотите отправлять трансляции по всем приложениям. http://developer.android.com/reference/android/content/BroadcastReceiver.html укажите в разделе безопасности. – mcd

 Смежные вопросы

  • Нет связанных вопросов^_^