Protección de datos JSON

2

Estoy planeando usar JSON como el mecanismo de transporte de datos entre mi aplicación iOS y mi servidor (el servidor es un servicio WCF). Mientras aprendía sobre JSON, me di cuenta de que todos los datos se transmiten directamente en la URL. Estoy seguro de que esta pregunta se hace mucho, pero no pude encontrar nada concreto en el sitio.

¿Existe una alternativa al envío de datos JSON directamente en la URL?

Si no, ¿cómo lo aseguro? Debería poder evitar que cualquier persona que no sea la aplicación solicite o envíe datos al servicio. Una forma de hacer esto es poner una 'clave' como parte de cada solicitud; uno que es conocido sólo por la aplicación y el servidor. De esta manera podría rechazar todas las llamadas sin la clave correcta. Pero, ¿qué es evitar que alguien detecte los datos y falsifique una solicitud?

¿SSL ayudará aquí? Si tengo un certificado SSL, ¿cifrará automáticamente todos los datos desde y hacia la aplicación?

Estoy seguro de que este es un escenario muy común, así que busco la forma más elegante de resolver este problema.

    
pregunta bobbyalex 29.05.2014 - 07:37
fuente

2 respuestas

2

No todos los datos JSON forman parte de la cadena de consulta de la URL. Por lo general, este es solo el caso cuando se envían solicitudes HTTP GET al servidor.

Los servicios como el suyo se aseguran de manera efectiva mediante el uso de HTTPS. El protocolo TLS subyacente cifra todos los datos intercambiados entre el cliente y el servidor, incluso las cadenas de consulta de URL.

Si configura su (s) servicio (s) WCF para que solo expongan un punto final HTTPS, todo el tráfico se cifrará automáticamente.

Como mencionó que está utilizando un servicio WCF, le recomiendo echar un vistazo a API web de ASP.NET : Está diseñado específicamente para crear servicios REST y encontrará que tiene mucho menos gasto que crear y mantener servicios WCF. También obtendrá un mejor rendimiento, ya que las solicitudes y respuestas no utilizan el protocolo SOAP.

    
respondido por el Steven Volckaert 29.05.2014 - 08:37
fuente
2

Una distinción clave es si desea (1) evitar que los usuarios no autorizados accedan a esta API, (2) para evitar la interceptación o un ataque de hombre en el medio, o (3) para evitar que un usuario autorizado utilice un software no autorizado. Para (2) puede utilizar SSL. Para (1) puede usar SSL y hacer que los usuarios se autentiquen usando una contraseña. Para (3) no hay una solución técnica confiable, solo puede intentar ofuscar la API. Un método común es cifrar las solicitudes utilizando una clave de cifrado incrustada (de manera ofuscada) dentro del programa.

    
respondido por el jbms 29.05.2014 - 09:02
fuente

Lea otras preguntas en las etiquetas