Controlar el acceso de las API de terceros a los recursos del sistema Android?
Al importar API de terceros (inyección de dependencia de paquetes, bibliotecas generadas, código fuente, etc.) en su proyecto de Android, asume que se comportarán según lo anunciado. La mayoría de las veces el código no es de código abierto, se obscurece o simplemente se compila.
¿Hay una manera de controlar el acceso de esta API a los recursos importantes del sistema tales como red, contactos, vídeo y audio, localización?
- Charles SSL Proxy funciona para cromo pero no para las aplicaciones
- Uso de un script de configuración de proxy automático con el emulador de Android
- Configuración de la red del emulador de Android
- Primera ejecución de Android Studio. No se puede acceder a la lista de complementos SDK de Android
- Charles ssl certificado de descarga no "debido a fallos de red"
El mejor enfoque sería proporcionar un proxy
a ellos para los recursos del sistema. Esto tendría los siguientes beneficios:
- Las pruebas podrían realizarse proporcionando datos falsos en los proxies
- Su aplicación no tendría que proporcionar todos los permisos que la API requiere si no son necesarios y el proxy permitiría que la API no se rompa debido al permiso emulando el permiso concedido
- Filtrar los posibles datos recopilados localmente sobre el usuario y enviados a un repo de inicio de la API, utilizados para publicidad o intenciones maliciosas
No he podido encontrar cómo una de estas soluciones se puede implementar ya que las actividades y servicios definidos por el usuario no pueden controlar los servicios de las API de terceros o incluso evitar que realicen llamadas directas a cualquier interfaz pública de Android.
La solución no debe requerir acceso root, ya que no desea tener este control fuera de los límites de su propia aplicación.
El contenido de esta pregunta está vinculado a varias preguntas que abordan particularidades de esta amplia cuestión ( datos de registro de proveedores de contenido , las solicitudes de red – que me hizo pensar en este problema mientras que la investigación de una respuesta para ello)
Nota : La respuesta corta es no, pero uno puede ser lo suficientemente creativo (tal vez va para hacks de nivel nativo puede resolver este problema – idk)
- No se pudieron resolver todas las dependencias para la configuración ': classpath'
- Notificación push con proxy
- com.android.volley.NoConnectionError - Emulador de Android con Charles Proxy
- Recursos de documentación confusos de proxy de Android
- Firebase android proxy setting
- ¿Hay alguna manera de crear un proxy HTTP en VPN en Android?
- Android Socket problema en Samsung Galaxy S4 (SGS4)
- HttpsUrlConnection con proxy
Construya la clase de proxy para el recurso android que desee proteger en un paquete llamado com.myproxies (por ejemplo, MediaRecorder, SensorManager, Camera, java.net.HTTPURLConnection) .En el proxy que necesita para implementar todos los métodos públicos de la clase que usted Se burlan y es necesario implementar la lógica para permitir el acceso (adelante al método apropiado) o denegar. Un paso útil sería comprobar el llamador del método .
-
Si planea importar código fuente, refactorice el código para cambiar el paquete a su proxy (proguard puede ayudar con esto).
-
Si está utilizando una biblioteca, obtenga Jar Jar Links , una utilidad que facilita el reempaque de bibliotecas Java e incorporarlas a su propia distribución y cambiar los nombres de los paquetes internamente a los de una clase de su paquete que servirá como proxy .
-
Si está utilizando la inyección de dependencia del paquete de Maven o Gradle, también puede intentar importar Jar Jar Links y realizar la refactorización del paquete en tiempo de compilación (no está muy seguro de que se pueda hacer)
Desafortunadamente es muy fácil romper el API, como yo mismo experimenté, y hay mucho trabajo manual involucrado.
- ¿Cómo recycleview adaptador en otro adaptador recycleview?
- Establecer GestureDetector en todas las vistas de niños