PUT vs. POST para actualizar la contraseña

7

Estoy escribiendo un sistema de administración de usuarios que debe incluir un cambio de utilidad de contraseña. No hacemos frente a las contraseñas de hash (esperamos que pronto lo hagamos). Como resultado, las contraseñas se pasan a través de https y se borran cada vez que se edita un usuario o se cambia su contraseña. ¿Hay alguna diferencia en el uso de solicitudes "PUT" frente a "POST" en este caso de uso? Normalmente utilizaría "PUT" porque es un reemplazo / edición pero sé que para la autenticación el estándar es "POST"

    
pregunta ford prefect 21.07.2014 - 19:30
fuente

1 respuesta

10

El verbo HTTP PUT se supone que es idempotent , un inteligente Palabra que significa que enviar dos veces la solicitud no debería tener ningún otro efecto. La idea es que un comando "PUT" es el opuesto a "GET": se supone que los contenidos de datos enviados con un "PUT" se almacenan en la URL especificada, y se pueden obtener de manera conceptual desde esa misma URL con un "GET ". En ese sentido, PUT y GET imitan el comportamiento esperado de FTP .

Por otra parte, un "POST" es el verbo genérico para llamadas similares a API: órdenes enviadas a un servidor para su ejecución inmediata. Tales llamadas a la API no son idempotentes. Una llamada de "cambio de contraseña" probablemente debería considerarse como una llamada a la API, no como una transferencia de archivos. Por lo tanto, debe usar POST en lugar de PUT.

Consulte, por ejemplo, esta publicación del blog para más información sobre PUT vs POST.

Desde el punto de vista de seguridad , no hay una diferencia real entre PUT y POST: todo pasa a través de SSL, y es principalmente una cuestión de convención entre el cliente y el servidor. Mientras el cliente y el servidor se entiendan, la seguridad ofrecida por ambas solicitudes es la misma.

La diferencia teórica es que un cliente podría hacerse cargo de sí mismo para emitir una llamada PUT nuevamente en caso de falla de la red, mientras que no lo haría para un POST. En general, prefiere la semántica POST, y mantenga PUT only para la transferencia masiva de archivos donde dicha reemisión sería una buena característica, y no un problema.

    
respondido por el Tom Leek 21.07.2014 - 19:54
fuente

Lea otras preguntas en las etiquetas