Esta pregunta era encontrado en SO. La respuesta no responde satisfactoriamente a la pregunta y, dado que es una cuestión de seguridad que merece una buena explicación técnica, la estoy repostando aquí. Por favor, avíseme si esto no es apropiado.
Siguiendo las instrucciones para desarrolladores de Google sobre la implementación de Firebase en mi aplicación , me doy cuenta de que hay una pelusa en Android quejas
La idea es que tenemos que implementar dos servicios que heredan de los servicios de Firebase:
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { ... }
public class MyFirebaseMessagingService extends FirebaseMessagingService { ... }
y luego registrar esos servicios en el manifiesto. Pero, no es del todo perfecto. En particular, estas dos entradas del servicio AndroidManifest.xml recomendadas no contienen ningún permiso especial:
<service android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:name=".MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
y así la plantilla dice:
Los servicios exportados (los servicios que configuran exportado = verdadero o contienen un filtro de intento y no especifican exportado = falso) deben definir un permiso que una entidad debe tener para iniciar el servicio o vincularlo. Sin esto, cualquier aplicación puede utilizar este servicio.
¿Debo agregar este atributo a cada etiqueta de servicio y terminar con él?
tools:ignore="ExportedService"
o hay un mejor enfoque en esta situación? Quiero decir, ¿es seguro exponer estos servicios derivados de Firebase en particular como este?