Mi aplicación define un permiso con android: protectionLevel = "signature".Cómo evitar que otras aplicaciones definan el mismo nombre de permiso
<permission android:name="my.app.permission.EXAMPLE" android:protectionLevel="signature" />
Mi intención es crear módulos de aplicaciones que solo se puedan iniciar con mi aplicación firmada. Estos módulos de aplicaciones tienen Android: permiso en sus actividades. Esto funciona bien. pero ... Una aplicación de terceros puede utilizar el mismo nombre de permiso y cambiado el nivel de protección a la normalidad, como este
<permission android:name="my.app.permission.EXAMPLE" android:protectionLevel="normal" />
Si mi aplicación se instala por primera vez, puedo evitar que otros aplicaciones para anular el permiso. Sin embargo, si uno desinstala mi aplicación y luego instala su aplicación, redefine el permiso.
¿Es posible evitar que otras aplicaciones usen el mismo nombre de permiso, por ejemplo, otorgar al permiso un id único como paquete de aplicación?
Aunque el Manifiesto está encriptado, cualquiera puede leer el nombre del permiso en log cat cuando intenta iniciar la actividad que requiere este permiso (se emite una excepción con el nombre de permiso requerido).
buena pregunta, supongo que no tiene manera de limitar otras aplicaciones de hacer esto. – FoamyGuy
Este es un problema de seguridad. No puedo garantizar que mis módulos de aplicaciones firmadas se inicien solo con mi aplicación central firmada, ya que una aplicación sin firma puede reemplazar mi permiso para definir una protección de bajo nivel y luego usar mis módulos firmados. – Dennix
Puede configurar una prueba creando una versión modificada de su aplicación con diferentes nombres de paquete, firma y protectionLevel = normal. Vea qué sucede cuando ambas aplicaciones están en el mismo dispositivo. Supongo que a) el control de firma comenzará primero y se asegurará de que la aplicación deshonesta no tenga acceso a su aplicación que requiera la firma correcta. Y b) que cadenas de permisos idénticas con diferentes niveles de protecciónLevel pueden coexistir en el mismo dispositivo. – tiguchi