2011-07-19 17 views
5

Independientemente del lenguaje de programaciónseguridad de cliente-servidor y autenticación

que tienen una aplicación cliente-servidor.

cliente móvil - servidor http

La aplicación estará disponible en varios teléfonos móviles no sólo androide.

Deseo asegurarme de que la solicitud provenga únicamente del móvil del cliente.

¿Cómo puedo resolver este problema de seguridad?

propongo:

tener una clave secreta no modificable en la aplicación móvil:

Cada solicitud se cifra usando esta clave y se descifra en el lado del servidor.

¿Es seguro codificar la clave si de esta manera tiene sentido en absoluto? (Descompiladores pueden obtener la clave de la aplicación estará disponible no sólo para android?!)

Información adicional:

Cada usuario tendrá un nombre de usuario/nombre de usuario ...

+2

He usado OAuth para un problema similar. Se adapta completamente a estas necesidades y hay bibliotecas para casi todos los lenguajes de programación. En mi caso, el servidor OAuth se comunica con dispositivos móviles/tabletas android y móviles/tabletas de Apple. – Marco

+0

¿Qué quiere decir con "solo móvil del cliente"? (1) solo un usuario autenticado puede acceder a su servidor desde un dispositivo móvil; O (2) un usuario puede acceder a su servidor solo desde su propio móvil O (3) un usuario debe acceder a su servidor solo por medio de un dispositivo móvil, no de una PC. (1) es fácil, (2) y (3) no lo son. Ver también: http://en.wikipedia.org/wiki/Two-factor_authentication – Ando

Respuesta

3

No coloque las claves de cifrado (o cualquier otra cosa que necesite para mantener en secreto) en las aplicaciones móviles y luego confíe en ellas. Este es un defecto crítico.

La clave puede ser de ingeniería inversa, y de hecho varias compañías de renombre han cometido este error. Google "Twitter oauth clave comprometida".

+0

Sí, lo pensé ... ¿cuál sería la solución? –

+0

@Sherif - no existe una forma infalible de identificar que la solicitud proviene de un * dispositivo * particular, todo lo que puede hacer es identificar al * usuario * mediante algún tipo de autenticación (por ejemplo, nombre de usuario y contraseña). – Qwerky

Cuestiones relacionadas