Proteger la base de datos remota contra la manipulación en una aplicación móvil

0

Esta es la primera vez que me enfrento a una implementación de aplicaciones móviles a gran escala. Esta aplicación necesita conectarse a un servidor remoto donde almacenar y recuperar datos.

Descarté conectarme directamente a la base de datos MySQL, ya que sería una muy mala idea, así que puse algunos scripts PHP en el lado del servidor que recibe datos de dispositivos móviles como consultas HTTP POST y produce una respuesta válida según la consulta.

Ahora estoy empezando a preocuparme por la seguridad utilizando este enfoque. Cualquiera puede conectarse a su WiFi doméstica y establecer como puerta de enlace alguna máquina local y comenzar a detectar tráfico, de esta manera sería muy fácil saber qué consultas se están enviando y cómo manipular algunas consultas para obtener / enviar datos no autorizados.

Para evitarlo, he considerado los siguientes enfoques:

  • SSL : Parece obvio, pero por lo que sé, SSL cifrará los datos en la transacción, pero aún puede ser detectado en una máquina local.

  • Algoritmo de cifrado : encripta los mensajes del lado del cliente y del servidor con algún cifrado seguro. Sin embargo, esto podría enfrentar algunos otros problemas, ya que codifica algunas claves en la aplicación, lo que no parece ser un gran problema.

Me gustaría evitar el uso de complementos de terceros y usar mi propio código para hacer todas las cosas, pero en este punto estoy atascado en cómo proceder.

¿Alguna idea? Gracias!

    
pregunta nKn 08.03.2014 - 14:53
fuente

2 respuestas

2

@Philipp tiene razón cuando dice que no puedes protegerte de tu cliente.

En lugar de hacer grandes esfuerzos para mantener en secreto las pseudo consultas, debe enfocar sus esfuerzos en la validación de entrada y las protecciones de inyección. En el servidor donde toma la pseudo consulta y la traduce a una consulta de SQL, asegúrese de que está citando correctamente cualquier entrada a la consulta de SQL y realice una comprobación de seguridad básica para levantar la barrera contra el abuso. Un WAF también podría ayudar aquí, pero si está escribiendo su solicitud, está en el momento y lugar correctos para colocar las protecciones adecuadas in situ , que es aún mejor.

    
respondido por el gowenfawr 08.03.2014 - 15:31
fuente
0

Basándome en los comentarios, las respuestas existentes y un poco más de su explicación, yo diría que su situación es algo a lo que Microsoft intentó crear una solución con la Base de computación segura de próxima generación (NGSCB) que también se conocía anteriormente como Palladium . Sin cifrar todo (código, memoria, datos en el procesador, datos que viajan en el bus, datos que se mueven hacia / desde la red) y hacer que la clave sea inaccesible para el usuario, no puede garantizar al 100% que su código esté funcionando según sus especificaciones. Como lo indica @gowenfawr, la mejor manera de mantener las cosas a salvo es ejecutar la mayor cantidad de código posible en un hardware que no pueda ser manipulado por el usuario, como su servidor. Por ejemplo, muchos juegos MMO solo enviarán la entrada del jugador al servidor y calcularán la física en el servidor mismo; el jugador ejecuta un cliente que solo sirve para recopilar información y procesar la salida del servidor. Podría decir que el enfoque más seguro es el enfoque thin client .

    
respondido por el Kevin Li 28.03.2014 - 23:46
fuente

Lea otras preguntas en las etiquetas