¿Cuál es el propósito de las solicitudes HTTPS GET vs POST cuando el certificado se fija?

0

Tengo una aplicación móvil que utiliza la fijación de clave pública para asegurarme de que solo me conecto a los servidores de mi CA. Esto funciona muy bien con https, y lo hace para que nadie pueda realmente hacer proxy de mi servidor y leer las solicitudes sin pasar por un cierto grado de problemas.

A un colega se le ocurrió la idea de que el anclaje de certificados hace que las solicitudes POST no sean tan útiles porque no hacemos pedidos a menos que el certificado / clave pública del servidor con el que estamos hablando coincida con el anclado. en la aplicación móvil. Por lo tanto, la gente no sería capaz de espiar el cuerpo POST en absoluto.

¿Hay alguna razón por la que GET sea menos seguro que POST en un caso en el que la identificación de la clave pública esté presente para las aplicaciones móviles?

    
pregunta fjlksahfob 12.06.2014 - 18:43
fuente

2 respuestas

2

La fijación de certificados es completamente ortogonal al método HTTP utilizado en la solicitud. La fijación de certificados es útil para prevenir ataques MITM y garantizar la confidencialidad e integridad de su canal de comunicaciones. Si ese canal transporta solicitudes con el método POST o GET o una mezcla es irrelevante.

Las solicitudes POST no son más seguras que las solicitudes GET. Si CSRF es su preocupación, tanto POST como GET son vulnerables a CSRF, el .

Se refiere al "" cuerpo de la POST ", pero eso no importa. Un atacante no puede ver ninguna parte de las solicitudes HTTP cuando el HTTPS está en uso. Toda la conexión está cifrada, no solo el cuerpo de la POST.

Use el método más apropiado para la operación que está realizando. Si su objetivo es recuperar datos sin un cambio de estado, use GET. Si está cambiando de estado, use POST (o incluso PUT, DELETE, etc., si desea estar completamente RESTful).

    
respondido por el David 12.06.2014 - 19:19
fuente
2

GET peticiones pueden ser forzadas sobre usted fácilmente. Básicamente, suponga que hay un servidor seguro con el que usted habla con GET peticiones bajo la protección de HTTPS y el establecimiento de certificados y cualquier otra cosa que pueda imaginar como protección adicional. Llamemos a www.example.com este servidor. Algunas de estas solicitudes están destinadas a tener un efecto, por ejemplo, una solicitud GET para:

https://www.example.com/[email protected]

activa un proceso en su servidor que culmina con el envío de un correo electrónico a la dirección especificada.

Ahora, un atacante laborioso te sigue y espera a que te sientes en un restaurante de comida rápida con WiFi gratis; él sabe que usted se conectará a ese WiFi y participará en una navegación casual por la web. El atacante saca sus propios puntos de acceso WiFi portátiles (como ese ) y espera a que se conecte a su hardware. . En ese momento, el atacante puede ver y modificar todo su tráfico. Por supuesto, SSL lo mantiene fuera. Sin embargo, cuando navega casualmente, no visita solo el sitio web de HTTPS. Si su navegador alguna vez realiza una conexión a un sitio web HTTP (sin SSL), el atacante solo tiene que insertar el siguiente texto en el HTML devuelto:

<img src="https://www.example.come/[email protected]"/>

yboom!Acabasdeenviarspamalpapa.Dehecho,alveresepequeñofragmentodeHTML,sunavegadorenvíadebidamenteunasolicitudGETaladirecciónespecificada.EstofuncionaindependientementedelaprocedenciadelapáginaenlaqueapareceestaetiquetaHTML;LassolicitudesGETdelasetiquetas<img>evadentotalmentela Política del mismo origen .

POST peticiones no pueden ser fabricadas de esa manera. Por lo tanto, independientemente de lo seguro que esté de hablar con los servidores que desea, deberá usar GET de las solicitudes para el procesamiento solo lectura .

    
respondido por el Tom Leek 12.06.2014 - 19:03
fuente

Lea otras preguntas en las etiquetas