GET vs POST, ¿cuál es más seguro? [duplicar]

6

He oído hablar de la diferencia programática b / w GET y POST en aplicaciones web. Preguntando por curiosidad cuál es más seguro, el método GET o el método POST en aplicaciones web, espero respuestas también en términos de protocolos (es decir, en http y https )?

    
pregunta BlueBerry - Vignesh4303 06.04.2013 - 10:21
fuente

3 respuestas

16

POST es más seguro que GET por un par de razones.

Los parámetros GET se pasan a través de la URL. Esto significa que los parámetros se almacenan en los registros del servidor y el historial del navegador. Cuando se usa GET, también es muy fácil alterar los datos que se envían al servidor, ya que está justo allí en la barra de direcciones para jugar.

El problema al comparar la seguridad entre los dos es que POST puede disuadir al usuario ocasional, pero no hará nada para detener a alguien con intenciones maliciosas. Es muy fácil falsificar solicitudes POST, y no se debe confiar de manera absoluta.

El mayor problema de seguridad con GET no es la intención maliciosa del usuario final, sino que un tercero envía un enlace al usuario final. No puedo enviarte un enlace por correo electrónico que forzará una solicitud POST, pero ciertamente puedo enviarte un enlace con una solicitud GET maliciosa. I.E:

Haz clic aquí para ver las mejores películas gratis.

Editar:

Solo quería mencionar que probablemente debería usar POST para la mayoría de sus datos. Solo desearía usar GET para los parámetros que deberían compartirse con otros, es decir: /viewprofile.php?id=1234, /googlemaps.php?lat=xxxxxxx&lon=xxxxxxx

    
respondido por el David Houde 06.04.2013 - 11:49
fuente
4

POST simplemente coloca la información en un lugar diferente (cuerpo del mensaje de solicitud) que GET (url). Algunas personas sienten que este último expone más información, lo cual es cierto para algunos puntos (lea en la edición). Desde un punto en el que un atacante quisiera interceptar su tráfico, la POST sería igualmente difícil / fácil para un atacante como para un GET.

Si desea seguridad para que su solicitud no esté expuesta cuando salga de los puntos de finalización e inicio, use SSL (https).

EDIT

Un punto válido de Gumbo y Ladadada, el registro de solicitudes GET puede ocurrir con más frecuencia que las solicitudes POST. Por ejemplo, en el historial de un navegador (si comparte ese navegador con alguien más).

Por lo tanto, esto significa que no debe incluir datos confidenciales en una solicitud GET, ya que una solicitud GET podría estar expuesta a personas que están mirando la pantalla.

    
respondido por el Lucas Kauffman 06.04.2013 - 10:49
fuente
0

Como @Gumbo dice que las URL se registran y aparecen en más lugares, las solicitudes GET son un poco más inseguras que las solicitudes POST. El punto es que mucha gente piensa que las solicitudes POST son mucho más seguras que las Requerimientos GET porque pueden ver los datos directamente en la URL pero utilizando, por ejemplo, un software proxy que intercepta las solicitudes del navegador, cualquiera puede ver y modificar los datos POST.

Otro punto es que tienes que pensar dónde usas GET y POST porque GET debería usarse solo para operaciones que no alteran la información de la base de datos , solo solicitar o leer información y datos POST Se usa cuando los datos van a ser alterados. Algunos escáneres web hacen clic en todos los enlaces automáticamente (generalmente GET) y no en botones o formularios (generalmente POSTS) evitando alterar la base de datos, pero si por ejemplo pone una operación de eliminación después de un enlace, tiene el riesgo de que se haga clic en el enlace. por herramientas más automatizadas más fácilmente.

Obviamente, los escáneres web también pueden "hacer clic" o seguir botones y formularios, pero por lo general se diferencian y este comportamiento podría modificarse para arañar la web de forma segura.

    
respondido por el kinunt 06.04.2013 - 11:54
fuente

Lea otras preguntas en las etiquetas