Conexión a un servicio web desde una aplicación de Android con seguridad

Actualmente estoy desarrollando una aplicación que descarga información de un servicio web que he escrito (en .net) y quiero asegurar la conexión para que sólo mi aplicación pueda obtener datos del servicio. ¿Cuál es la mejor manera de hacer esto?

No quiero que nadie pueda obtener los detalles de acceso si descompilan / hacen ingeniería inversa en mi aplicación. ¿Hay alguna manera de verificar la integridad de la aplicación que está solicitando datos antes de enviarla de nuevo?

No me importa que sean capaces de olfatear el tráfico para ver lo que contiene, simplemente no quiero nada más que mi aplicación para poder enviar solicitudes para proteger contra cualquier persona raspando todos los datos.

Soy muy novato en la seguridad tan simple como sea posible por favor!

2 Solutions collect form web for “Conexión a un servicio web desde una aplicación de Android con seguridad”

Chris,

Puede leer en un mecanismo llamado One Time Passwords (OTPs). http://en.wikipedia.org/wiki/One-time_password

Puede diseñar su aplicación para generar OTPs cada vez que intente conectarse a su servicio web. La responsabilidad de validar la autenticidad de la OTP reside en el servicio web.

Déjame entrar en un pequeño detalle ahora. Imagine que su aplicación incorpora un algoritmo que genera y suministra un número de 256 bits cada vez que se conecta al servicio web. El servicio web que diseña también implementa la parte de validación de la OTP. Por lo general, el algoritmo OTP tiene en cuenta "Hora del día" en su implementación (sugiero que Google alrededor de algunas implementaciones libres). Así que el servidor final (OTP Validator) sólo funciona si el tiempo en el servidor y el cliente se encuentra dentro de una ventana (digamos + – n seg) del tiempo de actualización n. Típicamente, el validador de OTP también generará el OTP en su extremo y apenas comparará el recibido. Usted puede además HASH el OTP antes de enviar y comparar los HASH de OTP generado en el servidor (no ayuda o es más seguro sin embargo).

Ahora se plantea la pregunta, ¿qué pasa si alguien obtiene el algoritmo (puede ser que acaba de utilizar un OTP de código abierto). Bueno, está destinado a ser. Una buena implementación de seguridad sólo es accesible con la contraseña correcta, incluso si todo lo demás está disponible para el atacante. Para hacer esto, puede que tenga que agregar una lógica para proporcionar sus aplicaciones la primera vez que se conectan, lo que OTP esperaría. Aquí asumo confianza en el primer uso. Puede agregar algo de lógica para almacenar un ID de aplicación residente único que se utilice mientras se calcula la OTP. Además, tendrá que mantener una asignación de "resident-id" a "public-id" en el servidor. Es el "public-id" que puede adjuntar a OTP y enviar al servidor para validar el envío de la aplicación es, de hecho, el que aprovisionó. Esto requiere que el mapa "public-id" a "resident-id" en el servidor y luego utilizar el "provisioned-id" de la misma manera en la generación de la OTP.

Además de esto, puede agregar lógica para solo entretener el combo OTP + "public-id" una vez. Esto evitará los ataques de repetición en caso de que alguien sólo olfatee y vuelva a enviar la misma solicitud a su servicio web.

Espero que esto te da una idea.

Ujjwal

Puedes ver los artículos

Y esto es Blackberry kSoap2 & Soap Header muy útil

  • Error de java.lang.outofmemory (servicios web) en android
  • Transferir datos de ArrayList al servicio web SOAP en android
  • ¿La mejor práctica para implementar retroalimentación de retorno a la actividad recreada?
  • Hacer formas dinámicas (el mejor enfoque)
  • Android, Ksoap, webService
  • Conectando MySql con Android sin usar PHP
  • Cómo rellenar el diseño de la tabla con la cadena JSON
  • Asegurar la comunicación desde Android a un servicio web
  • Enfoque de diseño: android and web service
  • JSON Cadena devuelta desde el servicio web SOAP que no contiene registros para la tabla
  • Desarrollador web visual Servicio web en depuración HTTP / 1.1 400 Solicitud incorrecta
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.