Protección de los puntos finales de Google App Engine

Actualmente soy bastante nuevo en Java y desarrollo de aplicaciones para Android, y dependo de Google para aprender la mayoría de lo que he hecho para mi primera aplicación hasta ahora. Actualmente estoy implementando Google App Engine en mi aplicación usando Eclipse. Soy capaz de escribir la API de backend y generar puntos finales muy bien para mi aplicación. Mi aplicación puede realizar las llamadas correctas y recuperar información de mi almacén de datos. Sin embargo, estoy un poco confundido en cuanto a cómo el backend realmente funciona detrás de la escena y estoy un poco preocupado por la seguridad de mi almacén de datos.

Mis preguntas son:

1) ¿Quién podría acceder a mis puntos finales? Hasta ahora, he comprobado el Explorador de API de Google y no puedo ver ningún método para mis puntos finales. ¿Puede alguien descompilar mi APK, encontrar mi ID de aplicación y crear una aplicación que pueda llamar a los métodos de mi punto final? Entiendo que puedo asegurarlo usando IDs de cliente y tal, pero si alguien pudiera forjar esto, ¿tendrían acceso a mis métodos de punto final?

2) ¿Es mi backend seguro? ¿Alguien podría leer realmente el código en mi backend? Mi suposición ahora es que el código que escribo en Eclipse y despliegue en Google se ejecute en el servidor y el código de mi aplicación sólo contiene las llamadas a él. (Esto puede parecer una pregunta tonta, pero he estado haciendo un montón de investigación y todavía no puede encontrar la respuesta).

-Editar- He hecho más lectura y creo que alguien solo podrá descargar y leer el código si tiene acceso de administrador a la aplicación del motor de la aplicación. En cuanto al backend para mi aplicación, es sólo un servlet extendido. Alguien solo puede acceder a estos métodos si su ID de cliente coincide con los que he configurado. Corregirme si me equivoco por favor.

3) ¿Es el único acceso a mi almacén de datos basado en lo que he escrito para el backend? Así, por ejemplo, tengo una función llamada getUser () que obtiene información sobre el usuario desde el almacén de datos. ¿Una persona con acceso a mi backend sólo será capaz de utilizar el método getUser (), y no será capaz de llamar manualmente a datastore.get (userKey) (si dicha persona era de alguna manera capaz de obtener la clave)?

Investigación:

He buscado en la protección de mis puntos finales y actualmente estoy trabajando en la autenticación de métodos de punto final con el ID de cliente. También he escrito mis métodos de tal manera que solo devuelvo información pública y ninguna información privada. Sólo estoy preocupado de que alguien que se las arregla para descompilar mi aplicación y recuperar toda la información en él será capaz de utilizar mis puntos finales, o peor alterar mi backend. Actualmente releo a través de los documentos en el backend del motor de aplicaciones, pero agradecería cualquier comentario sobre este asunto.

Gracias por tu tiempo.

Usted tiene razón de preocuparse. Vea las revelaciones de Snowden. Las siguientes son conjeturas educadas que usted puede intentar confirmar o rechazar. Si las respuestas son importantes usted puede necesitar la entrada de un hacker ético.

1) Un atacante tiene múltiples oportunidades de comprometer la seguridad de su aplicación cliente. No creo que el formato de archivo APK ofusque las direcciones URL de sus puntos finales. El archivo APK probablemente se comprime en una forma estándar de la industria que cualquiera puede expandir. Descartar el contenido binario ejecutable del APK revelará sus cadenas literales, nombres de punto final y mucho más. Decompiling iría un paso más lejos revelando sus algoritmos, un gráfico de la dependencia de todos los métodos y metadata sobre sus parámetros. Un depurador puede probablemente solo paso y supervisar su aplicación como bytecode sin necesidad del código fuente original.

El malware parece estar más extendido de lo que la mayoría de la gente piensa. Un dispositivo comprometido probablemente puede perder todo el tráfico de su aplicación a un equipo remoto para su análisis a un costo prácticamente nulo para el atacante. La relativa facilidad con la que se pueden publicar las aplicaciones de Android hace que el ecosistema sea más vulnerable que iOS. Cada otra aplicación instalada es potencialmente tu enemigo, especialmente si el usuario habilita el enraizamiento.

Los recientes descubrimientos de las autoridades de certificación comprometidas, la corrupción de caché de DNS, los puntos de acceso de imposter y los ataques de computadora en el centro muestran que un atacante motivado puede registrar su tráfico HTTPS específico sin tener acceso a los ordenadores cliente o servidor. Sin embargo, el atacante necesita gastar un pequeño costo por víctima por lo que sólo están en riesgo si su código y datos se cree que tienen un valor suficiente.

El robo de identidad del cliente o falsificación es probablemente posible. Básicamente el punto 1) se reduce a la seguridad a través de la oscuridad es la seguridad mínima cuyo costo de crack puede ser bajo.

2) El software de back-end es tan seguro como tu cuenta de Google, tu computadora y tu conexión de red. Por lo tanto bastante seguro 😉

3) Hay dos maneras de acceder a los datos en tu back-end: a través de la API que implementas ya través de la Consola de administración con tu cuenta de Google. Si un proveedor de hosting secretamente da a los demás una puerta trasera, naturalmente no lo admitirán. Creo que hay autoridades con el poder de hacer que eso suceda. Si estuviera realmente paranoico sobre mi aplicación y sus datos me desconfía de cada plataforma.

En resumen, todas las barreras de seguridad deben abrirse de forma condicional y ninguna seguridad es absoluta. Con el código de seguridad explícito en su aplicación puede esperar a ralentizar un ataque hasta el punto en que el coste de la relación costo / beneficio del atacante hace que la búsqueda de carne más fácil en otros lugares más atractiva.

  • Google App Engine - Demasiadas operaciones de lectura de almacenes de datos
  • Desde la API de archivos Blobstore obsoleta hasta blobs de servicio
  • GoogleAuthException: desconocido al autenticar con puntos finales de Cloud
  • JPA y Android
  • No se pudo resolver: com.google.firebase: firebase-database: 10.2.0
  • Pakage para verificar el token de inicio de sesión de Google en Go que se ejecuta en GAE
  • Base de datos de la nube para Android
  • Cómo implementar un GCM Hello World para Android con Android Studio
  • Endpoints de Google App Engine Cloud userId es nulo
  • Enviar mensaje desde el complemento del navegador web a android y la aplicación IOS usando XMPP
  • Servidor Android más seguro y seguro backend
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.