2011-05-19 10 views
7

Tenemos una aplicación web que proporciona un simple "gestor Http genérico" (ASP.NET) para proporcionar una manera fácil de obtener un sesión para una aplicación móvil.
Atm el concepto entero/aplicación está en un alfa/ensayo de estado/demo - así que no tirar las manos con horror ... :)Práctica recomendada: cómo asegurar las solicitudes Http (por ejemplo, inicio de sesión) desde una aplicación móvil

me di cuenta de que hay varios problemas de seguridad:

  • Si el dispositivo móvil está conectado a WLAN (ya que la rutina de rastreo necesaria es bastante fácil), simplemente puede oler la Solicitud (para obtener el valor de nombre de usuario/contraseña) y/o Respuesta (para reutilizar la sesión en otro lugar)
  • Podríamos agregar algo de encriptación/descifrado, pero como estamos en Android, cualquiera puede descomprimir el archivo .apk y hacer ingeniería inversa para obtener el sh ared-key (y salt)
  • Podríamos usar https: // ... pero ... estoy interesado si hay otra manera ... Otra razón por la cual no elegir SSL: no tenemos una sola web- aplicación, así que ... los más aplicaciones, más costoso será conseguir ... y, ya que es típico para las empresas, que quieren ahorrar dinero :)

Algunos nodos secundarios:
como planeamos darles a nuestros clientes la posibilidad de acceder a nuestra aplicación web (el manejador es solo una parte) con una aplicación móvil, no me importa publicarlo en el mercado ... Pero tal vez esto cambie. Entonces, el plan no incluye un "regalo público" del .apk.

Ya investigué sobre el tema "Cómo adaptar la respuesta, para que solo la aplicación móvil pueda usarla efectivamente" (por ejemplo, How do I secure a .NET Web Service for use by an iPhone application?).

Creo que este debe ser un problema más general, que no solo es algo en lo que pensar si estás en android/co ... Por lo tanto, la "Mejor práctica" no solo se puede limitar a Android (tendrías la mismo escenario en iphone o winforms también) - se trata más de: cómo tratar con un componente remoto para ejecutar funciones vitales (por ejemplo, inicio de sesión, acceso a BD, ...)

+0

¿Qué pasa con SSL? – Abhinav

+0

@Abhinav: Ya he agregado un párrafo para esta pregunta (ya que sabía que ocurriría): sé que hay https: // ... pero ... como mi empleador no es ese https-affine, yo Estoy buscando otra posibilidad. Para ampliar la razón: estamos hospedando nuestra aplicación varias veces. Cada instancia tiene n inquilinos. Entonces, necesitaríamos comprar un certificado para cada aplicación ... bastante costoso :) –

+0

Ah. Podría haberse perdido. No estoy seguro de las alternativas. He estado buscando una solución, pero aún no tengo suerte. :) – Abhinav

Respuesta

4

Usando una clave compartida en la aplicación que será compartido por todos los clientes definitivamente no es una solución.

En realidad, siempre puede implementar su propio protocolo seguro (utilizando cifrado asimétrico, ...) o utilizando otro protocolo (RPC seguro, IPsec, ...) pero en realidad SSL es una solución mucho más ligera (tanto el protocolo como las implementaciones) para tal uso. Además, como es muy común, es realmente fácil (= barato) de implementar y las implementaciones actuales son seguras y optimizadas para el rendimiento.

Cuestiones relacionadas