En mi aplicación (y sitio web), un usuario inicia sesión con su correo electrónico para realizar acciones como hacer un comentario en el sitio web con su nombre. Obviamente, es importante que las personas malintencionadas no puedan pretender ser este usuario y enviar comentarios en su nombre.
Leí que las acciones GET nunca deben realizar ninguna acción de cambio de estado. ¿Qué es evitar que alguien cree una solicitud POST utilizando la dirección de correo electrónico del usuario autenticado? ¿Es posible que alguien le diga a mi sitio web que realice una solicitud POST y falsifique las entradas?
En mi base de datos, estoy pensando en almacenar algún tipo de token para validar a un usuario (llamemos al token authentication_token ). Por ejemplo, cada vez que un usuario inicia sesión, authentication_token se actualiza en la base de datos para el usuario y se envía de vuelta para que se almacene en una SESIÓN en el sitio web o en la aplicación. Ahora, cada vez que se realiza una solicitud (por ejemplo, hacer un comentario), la SESIÓN almacenada se verifica en la base de datos para asegurarse de que coincida antes de proceder a hacer el comentario.
- El usuario presiona el botón "Enviar comentario" en el sitio web o en la aplicación
- La solicitud POST se envía con las entradas user_email , comentario y authentication_token
- SELECCIONE la autenticación_deken de los usuarios_Tabla DÓNDE correo electrónico = correo_usuario
- Continúe con el paso 5 solo si el authentication_token recuperado coincide con authentication_token que se envió en la solicitud POST.
- Crea el comentario.
¿Es esta una forma segura de validar una acción? ¿Es segura la transferencia de authentication_token a través de https? Gracias por cualquier ayuda.