¿Qué hacer para aumentar la seguridad de una cocinera de autenticación personalizada?

0

Estoy diseñando una cookie para fines de autenticación. En caso de éxito, esto entrará en una aplicación.

Aquí están las cosas que he incluido en esta cookie:

  • Es para web, por supuesto,
  • Incluye algunos datos sobre el usuario autenticado, con fines de rendimiento (UserId es la menor cantidad de datos)
  • Incluye una sal (datos adicionales) que solo conoce el servidor, para evitar ataques de falsificación de cookies
  • El valor total de la cookie se cifra a través de AES
  • Anexa un token de los datos del cliente con el fin de evitar el secuestro de cookies (la IP del cliente no se incluye debido a cada cambio de red, otro inicio de sesión sería obligatorio). De hecho, solo incluye el encabezado UserAgent
  • Es HttpOnly, para evitar que los ataques XSS obtengan acceso a las cookies (pero aún son vulnerables a CSRF)
  • Su vencimiento se establece en un mes, debido a una mejor UX (a las personas no les gusta iniciar sesión siempre después de cerrar el navegador)

Hemos hecho esto hasta aquí, y hemos probado y funciona bien. ¿Qué posibles ataques son posibles a través de este diseño y cómo podemos hacerlo más seguro?

    
pregunta Saeed Neamati 01.04.2017 - 09:45
fuente

2 respuestas

1
  • Use la flag de SameSite para evitar ataques CSRF .
  • Use prefijos de cookies para evitar el clobbering de cookies.
  • Use un HMAC para evitar la manipulación de cookies. Dices que has evitado esto usando una sal. No está claro qué significa esto, y si no es un HMAC, probablemente no sea la forma correcta de evitar la manipulación por parte del cliente.
respondido por el Sjoerd 01.05.2017 - 15:41
fuente
0

Al final del día, CSRF es el problema de seguridad que debe manejar cuando utiliza cookies. Asegúrese de que todas las URL que manipulan el estado requieran algún tipo de confirmación de que el usuario está enviando la solicitud intencionalmente.

Muchos marcos web tienen esto incorporado para los métodos de solicitud que cambian de estado. Django hace esto al incluir un "token CSRF" adjunto al formulario correspondiente.

Lo importante es no tener solicitudes GET que alteren el estado. Esto requiere problemas y cómo CSRF se implementa fácilmente.

    
respondido por el Kris Molinari 01.04.2017 - 13:49
fuente

Lea otras preguntas en las etiquetas