Недавно я просмотрел код в своем исходном коде 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 и использовать его здесь?
Вы используете LocalBroadCastManager? менеджер локального вещания не позволяет другому приложению отправлять намерения трансляции вашему приложению. реверанс android разработчик dot com. «Невозможно, чтобы другие приложения могли отправлять эти трансляции в ваше приложение, поэтому вам не нужно беспокоиться о наличии дыр в безопасности, которые они могут использовать». – mcd
Нужно ли мне определять какие-либо разрешения или просто использовать этот класс напрямую? – Rakesh
по мне и андроидному сайту :-). нет необходимости определять разрешение, если вы используете localbroadcastmanager. http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html. google это, например, – mcd