2011-09-26 6 views
10

Quiero saber qué tan seguro es empacar la base de datos con la aplicación en Android. ¿Los usuarios pueden acceder fácilmente a la base de datos? Como la base de datos que tengo tendrá datos que no quiero que sean pirateados por usuarios por uso indebido, ¿cuál es la mejor forma de proteger la base de datos en aplicaciones móviles?Android: Cuán segura es la base de datos con la aplicación

También mi aplicación usaría el servicio web (contactando mi propio sitio web) p. http: \ www.misitio.es/servicios/xxx

Mi sitio a su vez devolverá algunos datos a la aplicación móvil. Si alguien descompila el código java (en apk), accederá fácilmente a la URL que estoy usando para el servicio web. ¿Cómo puedo proteger mis datos en el sitio web para ser atacados por usuarios maliciosos? Si alguien conoce la URL, puede simplemente escribir esa URL en el navegador y obtener todos los datos en formato json, lo que no quiero porque esos datos pueden ser bastante confidenciales. Incluso si lo mantengo codificado, entonces el usuario puede conocer la codificación del código java (que obtiene después de descompilar apk).

¿Cómo evitar que se abuse de mi DB?

Si mi aplicación es mostrar los lugares locales como restaurantes, bares, etc. en dispositivos móviles, siempre los obtengo del sitio web usando el servicio web o proporciono una base de datos local con estos detalles para que la información pueda obtenerse rápidamente. En este caso, puedo proporcionar un servicio web de ACTUALIZACIÓN que actualizará la base de datos local. Pero la seguridad de DB local es de gran preocupación para mí.

¿Alguien puede sugerir dónde guardar la base de datos y cómo protegerla?

Rgds, Sapan

Respuesta

8

bases de datos locales y su archivo apk pueden ser leídos por cualquier dispositivo arraigada fácilmente. This tool incluso puede descompilar sus recursos como se explica en this youtube tutorial (en realidad nunca lo intenté).

Así que tendría que almacenar sus datos encriptados en su base de datos y descifrarlos a partir de su código de aplicación para asegurarse de que nadie pueda acceder simplemente obteniendo la base de datos del directorio data de su dispositivo.

No debe poner sus datos confidenciales (como contraseñas, etc.) en la carpeta de recursos, porque se pueden descompilar, ponerlo en su código.

Ahora algunas palabras para su API JSON. Ocultar la URL no es suficiente, ya que el usuario puede rastrear sus solicitudes fácilmente por un rastreador y obtener eso de todos modos. Debe proporcionar un mecanismo de autenticación para proteger el acceso no autorizado y también proteger su comunicación mediante SSL. (Por ejemplo, usando HTTP authentication - solo tiene sentido cuando su servidor proporciona SSL.)

Estas son las cosas que debe considerar y decidir cuán confidenciales son realmente sus datos.

+0

¿Puede proporcionar más información sobre la configuración de un mecanismo de autenticación para proteger el acceso no autorizado? Soy relativamente nuevo en este dominio. Así que cualquier ayuda será realmente genial. – Sapan

+0

Yo también, jeje ;-) Investigaré un poco y actualizaré mi respuesta cuando encuentre información útil para eso. – Knickedi

+0

Agregué un enlace de wikipedia :-D La autenticación HTTP podría ser la solución más general para la protección de solicitudes. – Knickedi

1
+0

Hola Prateek ... gracias por la valiosa información ... Ahora estoy pensando en utilizar Proguard en mi aplicación para dificultar la descompilación. Todavía tengo que averiguar cómo proteger las solicitudes de servicios web y la base de datos. – Sapan

2

Por lo que yo entiendo que vamos a:

  1. Pack DB inicial en su archivo APK (digamos con la carpeta res/activo)
  2. Durante la primera carrera explotar archivo de base de datos de res/activo a la carpeta de datos de aplicación
  3. Luego de que el tiempo obtener los datos en la base de datos del sitio web/servicio web

En este caso hay básicamente 2 vulnerabilidades (datos almacenados me refiero):

  1. imagen inicial DB, ya que está lleno de APK (que es en la vida real solo archivo zip), por lo que cualquiera puede desempaquetar y ver lo que está embalado en su base de datos
  2. D Archivo B almacenado en la carpeta de datos de la aplicación (generalmente/data/data/MY_APPLICATION_PACKAGE/databases). Se puede acceder a esta carpeta desde el dispositivo rooteado, por lo que nuevamente se pueden seleccionar fácilmente sus datos

La única opción que debe asegurarse es encriptar el contenido de su base de datos. La forma más sencilla de hacerlo es almacenar datos confidenciales en BLOB (en forma de XML de JSON) y cifrar/descifrar esos BLOB después/antes del uso real de ciertos registros.

Yo personalmente lo hice en mi aplicación, y funciona bien.

+0

gracias por la respuesta ... Como no soy un experto en la base de datos, será posible que proporciones un ejemplo simple. ¿Proguard también ayudará a proteger la base de datos dentro de apk? – Sapan

+0

@Sapan Busque referencias aquí http://stackoverflow.com/questions/6043984/sqlite-encryption-for-android Acerca de la ofuscación de Proguard - no le ayuda a proteger la base de datos, solo le ofende su código – barmaley

+0

Muchas gracias por los indicadores ... Definitivamente iré a través de las referencias y le haré saber si se ajusta a mis necesidades o no ... El archivo parece ser una buena opción, pero es un lanzamiento de desarrollador solo a partir de ahora ... cualquier idea sobre cómo proteger la web solicitudes de servicio para evitar el acceso no autenticado? – Sapan

Cuestiones relacionadas