¿Cómo me aseguro de que el usuario realmente autentificado realice una acción?

0

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.

  1. El usuario presiona el botón "Enviar comentario" en el sitio web o en la aplicación
  2. La solicitud POST se envía con las entradas user_email , comentario y authentication_token
  3. SELECCIONE la autenticación_deken de los usuarios_Tabla DÓNDE correo electrónico = correo_usuario
  4. Continúe con el paso 5 solo si el authentication_token recuperado coincide con authentication_token que se envió en la solicitud POST.
  5. 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.

    
pregunta user3451821 30.11.2017 - 06:45
fuente

1 respuesta

4
  

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?

Sí, un atacante puede diseñar cualquier solicitud que desee.

Está en el camino correcto, pero lo que ha hecho es reinventar sesiones . El usuario proporciona información de autenticación (generalmente un nombre de usuario y contraseña), usted crea una sesión y se la envía como un valor de cookie, y luego cada solicitud posterior viene con el ID de sesión y la verifica en su base de datos de sesión para saber quién es la solicitud vino de.

  

¿Es segura la transferencia de authentication_token a través de https?

Este es un ataque de robo de sesión, popularizado por Firesheep. El uso de https es la mitigación generalmente aceptada. Los ataques tienden a tratar de evitar https, por ejemplo, a través de sslstrip, por lo que debe cumplir con las mejores prácticas de https, como HSTS.

    
respondido por el Xiong Chiamiov 30.11.2017 - 07:13
fuente

Lea otras preguntas en las etiquetas