Cual Elegirian

Que tal,

De la siguiente lista Cual metodo elegirian para cada situacion.

Quisiera saber su opinion porque para mi el metodo GET, ademas de ser el mas sencillo se utiliza en situaciones
especificas que no requieren mayor seguridad.

1.- Post Get -----> A user is returning a login name an password

2.- Post Get -----> A user is requesting a new page via a hyperlink

3.- Post Get -----> A chat rom user is sending a written response

4.- Post Get -----> A user hits the 'next' button to see then next page

5.- Post Get -----> A user is hist the 'log out' button on the browser

6.- Post Get -----> A user is hist the 'back' button on the browser

7.- Post Get -----> A user sends a name and address form to the server

Mi eleccion quedaria de la siguiente manera:

1.- GET

2.-POST

3.- POST

4.- GET

5.- GET

6.- POST

7.- GET

SALUDOS !!!!

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

1P 2G 3P 4G 5P 6G ( bueno

1P
2G
3P
4G
5P
6G ( bueno depende, llegó a esta página por post? entonces post )
7P

Mi criterio:
El post no es más seguro que el get. Pero el post sirve para enviar más información que el get. El get es más útil cuando lo que se quiere obtener es una cosa "fija" ( como un link ) con el post estamos cambiando la pagina ( al menos conceptualmente )

Imagen de ezamudio

igual que Oscar

POST, GET, POST, GET, POST, GET, POST

POST es tantititititito más seguro que GET, porque los datos no viajan en el URL. Si haces un login usando GET, el usuario y password viajan en el URL y eso tiene varios efectos no deseados:

  • El navegador probablemente recordará el URL y lo sugerirá la siguiente vez que alguien entre al sitio; si no es la misma persona, ahí puede ver el usuario y password de la última persona que entró (o la que más usa ese navegador para entrar a ese sitio, dependiendo el navegador)
  • La info de usuario y password queda en el log del servidor HTTP y cualquier persona que tenga privilegio suficiente para verlo, podrá obtener esos datos. En un escenario típico donde hospedas tu aplicación con tu propio contenedor pero en un servidor web compartido, los que administran el servidor web tendrán acceso a esos datos, aunque tu base de datos y tu contenedor los tengas con más seguridad que Fort Knox.
  • Si el cliente utiliza un proxy, los datos de usuario y password también pasan directamente por el proxy en el URL, y probablemente se quedarán grabados en el log del proxy.

Todo lo anterior no ocurre con POST. Los datos van sin cifrar ni nada si usas HTTP y cualquier sniffer los agarra, o un proxy malicioso, pero un proxy confiable no va a guardar esa info y ciertamente no la va a poner en un log. Un web server tampoco dejará los datos de POST en un log. Los datos no se quedan en el navegador tampoco, no se afectan las sugerencias de URL's y cosas así. Y finalmente, si después de un POST le das al botón de regresar en el navegador, te sale una advertencia de que llegaste a esa página por POST y el botón de atrás reenviaría ese POST.

Adicionalmente, como ya mencionó Oscar, el POST permite enviar más datos; recuerda que los URL tienen un límite dependiendo del navegador Y del servidor web (varía y puede ser desde 1024 caracteres hasta 4000 o más).

GET O POST

tengo entendido que al enviar los datos por el GET estos son visibles en la URL del navegador viendolo de esta manera me quedo con el Metodo POST que ademas de ocultar la informacion me permite enviar aun mas info que el GET.

Imagen de bferro

REST Architecture

La semántica de los métodos del protocolo HTTP está muy bien descrita en la arquitectura REST para servicios Web y también en la propia definición del protocolo. Conviene, sea un servicio Web o no, tratar de usar esos métodos de acuerdo con sus definiciones. Queda más clara la aplicación para los que siguen esos estandares.

De acuerdo con http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html ( lo dejo en inglés):

  1. GET: The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI. If the Request-URI refers to a data-producing process, it is the produced data which shall be returned as the entity in the response and not the source text of the process, unless that text happens to be the output of the process.
  2. HEAD: The HEAD method is identical to GET except that the server MUST NOT return a message-body in the response.
    POST: The POST method is used to request that the origin server accept the entity enclosed in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line.
    POST is designed to allow a uniform method to cover the following functions:

    - Annotation of existing resources;
    - Posting a message to a bulletin board, newsgroup, mailing list,
    or similar group of articles;
    - Providing a block of data, such as the result of submitting a
    form, to a data-handling process;
    - Extending a database through an append operation.

  3. PUT: The PUT method requests that the enclosed entity be stored under the supplied Request-URI. If the Request-URI refers to an already existing resource, the enclosed entity SHOULD be considered as a modified version of the one residing on the origin server.
  4. DELETE: The DELETE method requests that the origin server delete the resource identified by the Request-URI.
    TRACE: The TRACE method is used to invoke a remote, application-layer loop- back of the request message.
Imagen de luxspes

REST Meaning

Ahora si coincido con bferro por completo, a GET, POST y los otros "verbs" no se les puede clasificar solo sobre la dimension de la seguridad... especialmente por que HTTP no es un protocolo seguro, asi que para un sniffer es exactamente lo mismo (si, eso significa que cualquiera puede leer tu correo mientras usas es linda interfaz web que te proporcionan hotmail, o yahoo, o algun otro a menos que la url diga HTTPS todo el tiempo... ) para saber mas sobre REST te recomiendo este articulo

O sea: > El get es más útil

O sea:

> El get es más útil cuando lo que se quiere obtener es una cosa "fija" ( como un link ) con el post estamos cambiando la pagina ( al menos conceptualmente )

Imagen de luxspes

Significado de verbos REST

Mas o menos, el get representa la obtencion de un recurso "fijo", el post... bueno, el post no significa exactamente que estemos cambiando la pagina, yo solia creer que REST se podia mapear directo a CRUD:

GET -> Read
DELETE -> Delete
POST->Insert/Update
PUT ->Insert/Update

Y mapeaba a POST y a PUT hacia la misma operacion CRUD, pero ahora ya no estoy tan seguro...

Por lo que he leido la diferencia entre POST y PUT es la URI. En PUT la URI identifica a la entidad dentro de la peticion (la entidad que tu quieres insertar o actualizar) mientras qeu en POST la URI identifica al recurso que manejara a la entidad dentro de la peticion

Asi pues, POST es como decir "Recurso X, haz algo con esta Entidad Y que viene en la peticion", mientras que PUT es mas como "Inserta/Actualizar a esta Entidad Y que vien en la peticion para que sea el Recurso X"

Entonces POST es mas como "Dile a X que haga algo con Y"...

Aja.. y PUT como "toma este

Aja.. y PUT como "toma este contenido / archivo / datos y ponlos en tal ruta".

Pero como el tema original es(ra) GET/POST, pos no se mencionó.

Imagen de bferro

Muchos recursos sobre REST but,

Si les interesa, la tesis doctoral de Roy Fielding donde presenta REST al planeta está en http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm