PDA

Ver la Versión Completa : [ CONSULTA ] Mejores practicas para peticiones Web seguras


c2alvaro
11/11/15, 15:30:46
Saludos compañeros, acudo a uds otra vez para solicitar de sus conocimientos avanzados sobre este tema, mejores prácticas para hacer un WebService seguro.



Que se debe hacer para tener una conexión segura desde android a un servidor web y poder intercambiar datos sensibles utilizando las mejores técnicas de seguridad?



Ya hice pruebas y aprendí sobre como consumir servicios web desde android usando HttpClient (ya se que eso está olvidado por google) pero fue los mas que encontré en la web para poder comprender mejor el tema.


Ahora que debo usar para sustituir HttpClient? Quien soporta Https? Es mejor Volley que Ksoap ? que necesito para tener una conexion segura entre android y el servidor Web.


Una vez mas gracias por sus gentiles comentarios.

mocelet
11/11/15, 18:22:18
La seguridad tiene muchos ámbitos, si hablamos solo de que la comunicación móvil-servidor sea segura, lo más fácil es que las comunicaciones sean HTTPS.

Si el dominio es tuyo tendrás que comprar un certificado SSL (hay bastantes entidades que emiten certificados como Thawte, GoDaddy, StartSSL, Verisign, GeoTrust, etc. etc.), si no probablemente el proveedor ya tenga uno y puedas establecer conexiones seguras sin hacer nada más. Ojo si soportas versiones antiguas de Android (anteriores a 2.3) porque puede que no incluyan el certificado de la entidad (y entonces el certificado que te emitan lo considerará que no es de confianza y no te establecerá la conexión)

La biblioteca da igual, todas soportan HTTPS y no hay que hacer nada más que poner https:// en vez de http://. La magia ocurre por debajo gracias a la infraestructura que soporta SSL (y HTTPS). Lo único engorroso es el tema del certificado, hay que generar una petición de firma, que te la firma la entidad certificadora de confianza e instalar el certificado en el servidor web (todo esto, nuevamente, si es tu propio dominio, si no no)

kriogeN
11/11/15, 20:53:29
El tema de la conexión segura con SSL ya te lo ha dicho mocelet, es todo a nivel de servidor. A tu aplicación le da igual que uses HTTP o HTTPS, eso se lo va a tragar las librerías de nivel bajo de Android.

En cuanto a sustituir HttpClient, lo natural es sustituirlo por HttpURLConnection, que es la función recomendada por Google a partir de Gingerbread. Si usas HttpClient con Android 6.0 no funcionará.

En cuanto a Volley o kSoap. Son 2 librerías completamente distintas.

Volley es una librería de nivel más alto para comunicación HTTP, hace funciones de forma simple que con HttpClient o HttpURLConnection son más complejas, como por ejemplo enviar un método POST. O directamente obtener un listener para respuestas OK (2XX) o Error (Cualquier otra). Yo uso Volley para todas mis comunicaciones, incluso también como cacheador de imágenes, me parece 1000 veces mejor que Picasso, UIL y derivados, además de tenerlo todo en una única librería.

Volley hasta Gingerbread usa por debajo HttpClient, y desde Gingerbread usa HttpURLConnection.

kSoap es un consumidor de servicios WSDL, que son un subtipo de comunicación HTTP, es una librería de nivel aún más alto que Volley, pero la última vez que la miré decían que funcionaba de puto culo con Android. Si tus servicios no están hechos en formato WSDL no te vale para nada.

mocelet
11/11/15, 23:01:43
Dejo por aquí un enlace muy completo a la documentación de Android al respecto:
http://developer.android.com/training/articles/security-ssl.html

Cuando vayas a comprar el certificado SSL tendrás la misma duda que yo, ¿cuál? Los hay desde 5 euros hasta 250 euros al año...

Los de Comodo aparentemente son los más baratos de conseguir y funcionan bien a partir de Android 2.3 siempre que instales en el servidor los certificados intermedios necesarios. También son los que menos garantía ofrecen en caso de que sus certificados se vean comprometidos.

Tengo que comprar uno yo también, ¿alguna sugerencia?

kriogeN
11/11/15, 23:18:41
Dejo por aquí un enlace muy completo a la documentación de Android al respecto:
http://developer.android.com/training/articles/security-ssl.html

Cuando vayas a comprar el certificado SSL tendrás la misma duda que yo, ¿cuál? Los hay desde 5 euros hasta 250 euros al año...

Los de Comodo aparentemente son los más baratos de conseguir y funcionan bien a partir de Android 2.3 siempre que instales en el servidor los certificados intermedios necesarios. También son los que menos garantía ofrecen en caso de que sus certificados se vean comprometidos.

Tengo que comprar uno yo también, ¿alguna sugerencia?

Yo ahora mismo en una plataforma que acabo de montar estoy usando el gratuito que ofrece StartSSL.

https://www.startssl.com/

Cuando la plataforma empiece a extenderse y tengamos entrada de dinero compraremos uno con EV.

mocelet
12/11/15, 07:24:32
Gracias, en efecto gratis es más barato xDD Lo que pasa es que los startssl free son sólo para uso no comercial (apdo. 3.1.2 de su ristra de subscriber obligations), y el reissue si hiciera falta no es gratuito. Lo siguiente ya son $60 creo.

c2alvaro
12/11/15, 13:53:48
La seguridad tiene muchos ámbitos, si hablamos solo de que la comunicación móvil-servidor sea segura, lo más fácil es que las comunicaciones sean HTTPS.

Si el dominio es tuyo tendrás que comprar un certificado SSL (hay bastantes entidades que emiten certificados como Thawte, GoDaddy, StartSSL, Verisign, GeoTrust, etc. etc.), si no probablemente el proveedor ya tenga uno y puedas establecer conexiones seguras sin hacer nada más. Ojo si soportas versiones antiguas de Android (anteriores a 2.3) porque puede que no incluyan el certificado de la entidad (y entonces el certificado que te emitan lo considerará que no es de confianza y no te establecerá la conexión)

La biblioteca da igual, todas soportan HTTPS y no hay que hacer nada más que poner https:// en vez de http://. La magia ocurre por debajo gracias a la infraestructura que soporta SSL (y HTTPS). Lo único engorroso es el tema del certificado, hay que generar una petición de firma, que te la firma la entidad certificadora de confianza e instalar el certificado en el servidor web (todo esto, nuevamente, si es tu propio dominio, si no no)

Gracias amigo mocelet, tomare nota de todo

c2alvaro
12/11/15, 14:40:54
Gracias a todos por sus comentarios, tengo mas dudas pero esto ya es un comienzo