elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Duda con PHP - Diferencia entre GET y POST
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con PHP - Diferencia entre GET y POST  (Leído 2,527 veces)
Trunchante

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Duda con PHP - Diferencia entre GET y POST
« en: 14 Mayo 2019, 11:55 am »

Buenas Hackers!

Estoy ahora jugando un poco con PHP y no entiendo varias cosas. Os pongo en contexto, he instalado las herramientas LAMP (Apache{2} + mySQL-server + PHP) y hize así rápido una página index.php que es un Login. SI te logueas bien accedes a la siguiente página y si no te avisa de que el Login es incorrecto volviendo a la misma página.

El caso, viendo un poco el uso de GET y POST entiendo un poco la diferencia, con GET los elementos se envían de forma "pública" sin embargo con POST no sabes lo qué mandas. Al final el login lo dejé usando POST y efectivamente, con mysql puedes comprobar de esta forma si el usuario se manda.
SIn embargo, yo he visto en páginas de wordpress que se supone que ya tiene un prestigio como CMS, hacer el login usando GET, bien es cierto que no se puede pillar porqué va cifrado y tal, pero no entiendo eso (una mala praxis?).

Entonces, esto es para ver si me aclaran un poco la diferencia entre los formularios con GET y POST

Gracias


En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: Duda con PHP - Diferencia entre GET y POST
« Respuesta #1 en: 14 Mayo 2019, 12:06 pm »

Ambos se mandan de forma publica, ambos pueden ser vistos. La diferencia es que uno forma parte de la URL (GET) mientras que el otro forma parte del BODY que se envía en la petición (POST). Para entenderlo realmente hay que entender GET y POST del protocolo HTTP.

GET es una petición con cabeceras y nada más, no tiene contenido.
POST es una petición con cabeceras y contenido.

https://developer.mozilla.org/es/docs/Web/HTTP/Methods
https://en.wikipedia.org/wiki/POST_(HTTP)

Ahora bien, dado que GET va en la URL, los datos que se envíen mediante este protocolo son visibles a cualquier ojo, con POST dado que se envían en el BODY, además de no ser visibles en las cabeceras de la petición, pueden ir cifrados gracias al protocolo SSL lo cual le da un layer de seguridad contra los MiTM (ataques man-in-the-middle). Por eso siempre se debe utilizar POST para hacer un login.

Citar
SIn embargo, yo he visto en páginas de wordpress que se supone que ya tiene un prestigio como CMS, hacer el login usando GET,

No te voy a decir que no porque es posible, pero no culpes a un CMS de lo que hacen sus usuarios. Wordpress por defecto usa POST y tiene tokens CSRF para protección adicional lo cual es completamente incompatible con GET. Que dicha funcionalidad se pueda modificar y adaptar a gusto de cada uno.. tambien.

Saludos


« Última modificación: 14 Mayo 2019, 12:07 pm por #!drvy » En línea

Trunchante

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Duda con PHP - Diferencia entre GET y POST
« Respuesta #2 en: 14 Mayo 2019, 12:24 pm »

Mmm entiendo. De ahí esa "flexibilidad" que da PHP frente a html (además de las variables superglobales y demás).
Aprovecho para otra duda de no tiene nada que ver con la anterior. Yo podría incluir html PHP y javascript? Es que por ejemplo a la hora de darle a un botón me parece más sencillo hacer onclick=funcionJavascript() que tener que mandar los datos del formulario y tener que procesarlos con if-else y tal. En la práctica no pude hacerlo, aver si me pongo otra vez con  con ello
Nose si se entiende lo que digo. Muchas gracias!
En línea

animanegra

Desconectado Desconectado

Mensajes: 287



Ver Perfil
Re: Duda con PHP - Diferencia entre GET y POST
« Respuesta #3 en: 14 Mayo 2019, 12:25 pm »

Corrijo ligeramente lo que te comentan, cuando cifras con https cifra también la URL así que da igual utilizar POST o GET, al menos en ese aspecto. La única diferencia es que una va en la propia petición get de la cabecera y otra va en un apartado aparte de la petición con lo que la cantidad de datos no se limita al estipulado por el maximo tamaño de la URL. La seguridad adicional es simplemente que no se visualiza la peticion en la URL y no te lo puede mirar alguien que está al lado tuyo, pero no aporta nada de seguridad.

Peticion pass con GET:
Código:
GET /?user=lalala&pass=1234 HTTP/1.1
Host: www.servidor.com
User-Agent: Mozilla/7.47.0
Accept: */*


Peticion pass con POST:
Código:
POST / HTTP/1.1
Host: www.servidor.com
User-Agent: Mozilla/7.47.0
Accept: */*
Content-Length: 21
Content-Type: application/x-www-form-urlencoded

user=lalala&pass=1234

Dependes siempre del cifrado en ambas para que se envie de una forma que no puedan capturar.

Citar
Mmm entiendo. De ahí esa "flexibilidad" que da PHP frente a html (además de las variables superglobales y demás).

No tiene nada que ver uno y otro (Me refiero a que se utilizan para cosas distintas). Uno procesa en cliente y otro en servidor. Una parte sirve sólo para que el cliente vea las cosas de forma bonita y de presentación y la otra sirve para hacer programas que hagan un procesado en el lado del servidor (consultas a bases de datos, autenticacion, acceso y subida de ficheros)
« Última modificación: 14 Mayo 2019, 12:29 pm por animanegra » En línea


42
No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda: diferencia entre tipos de MiM y envenenamiento
Hacking
kiqueW 2 3,634 Último mensaje 29 Noviembre 2010, 16:48 pm
por kiqueW
[Duda] Diferencia entre JB y JS
Ingeniería Inversa
Stakewinner00 5 3,649 Último mensaje 24 Noviembre 2012, 10:37 am
por Stakewinner00
[Duda] ¿Existe alguna diferencia entre int(example); y (int) example;?
Programación C/C++
Zodiak98 5 3,418 Último mensaje 18 Septiembre 2013, 16:29 pm
por Zodiak98
Ayuda! diferencia entre form action y $http.post()
Desarrollo Web
brandonhz 0 1,774 Último mensaje 12 Noviembre 2018, 22:34 pm
por brandonhz
DUDA Big O: diferencia entre O(n^2) y O(2^n)
Programación General
RichieTozier21 2 3,149 Último mensaje 19 Febrero 2023, 01:46 am
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines