2

Kürzlich habe ich einen Code-Scan auf meinem Android-Quellcode mithilfe des HPFortify-Dienstes durchgeführt. Sie berichteten von Sicherheitslücken in Bezug auf einen der Sendeempfänger und den Absender. Der Broadcast-Sender und -Empfänger sind intern in der App und die Absicht wird nicht außerhalb der Anwendung gesendet. Diese werden hauptsächlich für die interne Kommunikation verwendet. HPFortify schlug vor, die Broadcaster-Berechtigung zu verwenden, um den Angriffsvektor zu reduzieren. Auf diese Weise beschränken Sie den Sender, andernfalls kann jede böswillige Anwendung die Absicht senden und der Empfänger wird sie verarbeiten. In ähnlicher Weise schlugen sie vor, die Empfänger-Erlaubnis zu verwenden, so dass die gesendete Absicht von dem beabsichtigten Empfänger empfangen wird. Dieser Broadcaster und Empfänger sind intern in der App und andere App verwenden diese Absicht nicht. Hier ist mein eigentlicher Code für Broadcaster:private Sende- und Empfängerberechtigungen

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

ich dynamisch bin Registrierung des Rundfunkempfängers mit dem folgenden Code-Schnipsel.

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

HPFortify legt nahe, dass die Verwendung der sendBroadcast mit Erlaubnis Zeichenfolge Beispiel:

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

Ähnlich für Rundfunkempfänger:

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

Ich bin nicht sicher, wie diese Berechtigung zu definieren und Verwenden Sie es im Sender und Rundfunkempfänger. Muss ich die private Berechtigung in der AndroidManifest.xml definieren und sie hier verwenden?

+1

verwenden Sie LocalBroadCastManager? Der lokale Broadcast-Manager verhindert, dass andere Anwendungen Broadcast-Absichten an Ihre App senden. knicks android entwickler dot com. "Es ist nicht möglich, dass andere Anwendungen diese Broadcasts an Ihre App senden, sodass Sie sich keine Sorgen über Sicherheitslücken machen müssen, die sie ausnutzen können." – mcd

+0

Muss ich eine Berechtigung definieren oder kann ich diese Klasse direkt verwenden? – Rakesh

+0

nach mir und Android-Website :-). Sie müssen keine Berechtigung definieren, wenn Sie den localbroadcastmanager verwenden. http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html. google es zum Beispiel – mcd

Antwort

3

Wenn Sie innerhalb der Anwendung senden müssen, verwenden Sie LocalBroadCastManager, da der lokale Broadcast-Manager niemals Broadcast Intent außerhalb des aktuellen Prozesses sendet.

Wenn Sie möchten, dass andere Anwendungen Ihre Broadcasts empfangen oder senden können, verwenden Sie BroadCastManager, und Sie müssen die Verwendungen verwenden-Berechtigungen (benutzerdefinierte Benutzerrechte).

für weitere Informationen sehen Sie bitte unten Android-Dokumentation für Broadcast-Empfänger geben sie detaillierte Informationen über Sicherheit im Sicherheitsbereich.

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

0

Muss ich die private Berechtigung in der AndroidManifest.xml definieren und sie hier verwenden?

Ja. Berechtigungen müssen immer in einem Manifest definiert werden. Andernfalls könnte Android nicht wissen, welche Schutzstufe für diese Berechtigung verwendet werden soll.

+0

Muss ich noch Erlaubnis verwenden, wenn ich 'LocalBoadCastManager' verwende? – Rakesh

+0

@ F43nd1r Berechtigung nur erforderlich, wenn Broadcasts über Anwendungen gesendet werden sollen. http://developer.android.com/reference/android/content/BroadcastReceiver.html im Sicherheitsbereich angeben. – mcd