2008-09-16 14 views
39

Estoy desarrollando una aplicación cliente/servidor que se comunicará a través del reposo. Algunos datos de solicitudes personalizadas se almacenarán en el encabezado de la solicitud. Tanto el servidor que envía la solicitud como el servidor receptor tienen un certificado SSL: ¿se codificarán los encabezados o solo el contenido?¿Los encabezados de solicitud REST están encriptados por SSL?

Respuesta

52

SSL encripta toda la ruta de comunicaciones del cliente al servidor y viceversa, así que sí, los encabezados serán encriptados. Por cierto, si desarrolla aplicaciones en red y se preocupa por la seguridad de los datos, lo menos que debe hacer es leer un libro como Practical Cryptography, de Niels Ferguson y Bruce Schneier, y probablemente leer más sobre seguridad de aplicaciones web. sería una buena idea Si puedo hacer una observación, y por favor, no me refiero a una crítica personal, su pregunta indica una falta fundamental de comprensión de las tecnologías de seguridad web muy básicas, y eso nunca es una buena señal.

Además, nunca es una mala idea confirmar que los datos que se supone que están encriptados están de hecho encriptados. Puede usar un analizador de red para monitorear el tráfico en el cable y tener cuidado con cualquier cosa sensible que se envíe a la luz. He usado Wireshark para hacer esto antes, los resultados pueden ser sorprendentes, a veces.

+1

Gracias, eso es muy apreciado. Confiaba en la respuesta, pero tengo que confirmar esto (por los poderes) antes de comenzar el desarrollo. ¡Aclamaciones! –

+0

ver también http://stackoverflow.com/questions/187655/are-https-headers-encrypted –

+3

"SSL encripta toda la ruta de comunicaciones" ... excepto los encabezados IP y TCP. –

5

Tanto los encabezados como el contenido están encriptados.

0

SSL ... o más bien HTTPS (HTTP sobre SSL) envía todo el contenido HTTP a través de SSL, y como el contenido HTTP y los encabezados son de hecho lo mismo, esto significa que los encabezados también están encriptados. Al ver que los datos GET y POST se envían a través de encabezados HTTP, entonces solo tiene sentido que cuando se envíen datos de forma segura no solo querrá que se cifre el código de respuesta o el contenido.

+0

El contenido HTTP y los encabezados no son lo mismo, y los datos POST no se envían a través de encabezados HTTP, sino que se envían en el cuerpo de la solicitud. – Jim

+0

La información dada por Wesley es incorrecta. POST pone los datos en el cuerpo del mensaje. – Dylan

6

Mientras se comunique en el túnel SSL, todo lo enviado entre el servidor y el cliente será encriptado. El cifrado se realiza antes de que se envíen o reciban datos.

2

Tener un certificado no es suficiente, debe configurar el servidor web para cifrar las conexiones (es decir, para usar el certificado) para ese dominio o host virtual. Además, creo que solo necesitaría un certificado único, las respuestas a las solicitudes seguirán encriptadas.

Y sí, los encabezados HTTP están encriptados al igual que los datos.

3

Parece que piensas que REST es un protocolo distinto.

REST no es un protocolo. Es un estilo de diseño para aplicaciones basadas en HTTP.

Por lo tanto, escriba una aplicación HTTP. ¿Los encabezados están encriptados? Sí, si está utilizando el protocolo HTTPS (HTTP sobre SSL) en lugar de HTTP simple.

Tener certificados en ambos lados no es directamente relevante para su pregunta. Los certificados SSL se utilizan para la autenticación. Ayudan a detectar ataques de hombre en el medio, como los que son posibles usando el envenenamiento de caché de DNS.

+0

Gracias, pero soy consciente de que REST es una metodología en lugar de un protocolo. –

0

Las otras respuestas son correctas de que los encabezados de hecho están encriptados, junto con el cuerpo, al usar SSL. Pero tenga en cuenta que la URL, que puede incluir parámetros de consulta, es nunca cifrada en. Por lo tanto, tenga cuidado de nunca poner información confidencial en los parámetros de consulta de URL.

Actualización: como @blowdart señalado a continuación, esto es incorrecto. Vea el comentario a continuación.

+4

No, no es exactamente cierto. Los parámetros de consulta se envían después del saludo y, por lo tanto, se cifran; SSL específicamente los elimina y los envía como parte del bloque de la página. – blowdart

+8

@blowdart: muy cierto, pero los navegadores seguirán capturando cadenas de consulta en su historial. Por lo tanto, es mejor no utilizar información confidencial en una cadena de consulta. – Matt

+1

Desde entonces he confirmado que @blowdart es correcto; mi respuesta fue incorrecta –

-2

No todo está cifrado: la cadena de consulta de solicitud no está encriptada. Créeme, he visto las solicitudes de esta manera:

https://mydomain.com/authenticate?user=username&password=MyStrongPasswordSentInTheClear

favor, no ponga los datos sensibles como parámetros en la cadena de consulta.

+2

Incluso la consulta está protegida por SSL/TLS entre su navegador y el servidor. – Bruno

+0

No es cierto. Todo después de que 'mydomain.com' se envía por el cable dentro de la solicitud' HTTP GET/POST/etc.' y como tal ** está encriptado **. Sin embargo, la cadena de URL en sí misma generalmente se filtra en rutas lógicas paralelas, p. en el historial del navegador, registros, enlaces guardados, favoritos, barras de herramientas, registros del servidor; y probablemente lo que es peor, en algunas referencias analíticas web. Dado que la pregunta original es sobre REST, muchos de estos son irrelevantes. Sea lo que sea, como una buena práctica, mi regla general personal es: "no coloque datos confidenciales (contraseñas, PII, ID de DB) en las URL". – Valo

Cuestiones relacionadas