La respuesta de Matthew es definitivamente la correcta, pero pensé en seguir con más detalles:
La autenticación basada en cookies tiene una gran debilidad: la cookie es todo lo que necesita para autenticar. Si alguien es capaz de robar la cookie de un usuario, no hay nada integrado en el proceso de autenticación de cookies que permita al servidor saber que han ocurrido shenanigans. Utiliza el ejemplo de un atacante que tiene acceso físico a la computadora, pero ese es un caso raro a tener en cuenta. Las vulnerabilidades de XSS en sitios con cookies inseguras son una forma mucho más común de que las cookies sean robadas. También es común: ataques de fijación de sesión, rastreo de paquetes en redes inalámbricas inseguras para sitios que no usan https y varias otras formas de ataques MITM. Para que quede claro, esto no es solo un problema para la autenticación basada en cookies. El problema subyacente es que HTTP es un protocolo sin estado, lo que significa que si puede reproducir una solicitud anterior por completo, no hay forma (integrada en HTTP) de que el servidor sepa que usted no es la misma persona.
Entonces, ¿cómo se aseguran los servicios de que la persona con la que hablan sea la persona con la que realmente quieren hablar? La respuesta no es necesariamente sencilla. Como menciona Matthew, debe monitorear sus credenciales de acceso de otras maneras: cambios de dirección IP, cambios de navegador, cambios de agente de usuario, etc. En esencia, realiza un seguimiento de los metadatos relacionados con los dispositivos con los que está hablando y presta mucha atención. a cualquier cambio sospechoso.
Como se nota en un comentario, incluso esto no es infalible. La gente, obviamente, puede falsificar a los usuarios de agentes. Esto podría ser contrarrestado mediante el uso de técnicas de toma de huellas dactilares del dispositivo ( Huellas dactilares del dispositivo y vigilancia masiva por computadora ) sobre el cual un atacante tiene sustancialmente menos control. Las direcciones IP no son fijas, especialmente para los operadores de telefonía móvil, pero siempre que cada dispositivo tenga su propia cookie, incluso esto puede ser rastreado y contabilizado. Si una cookie determinada se ha asociado con la misma dirección IP durante 6 meses y aparece repentinamente en otro país, es probable que tenga un problema. Si un dispositivo cambia con frecuencia las direcciones IP (es decir, un teléfono) pero ahora aparece con una dirección IP no asociada con un operador de telefonía móvil o su área geográfica habitual, es probable que tenga un problema. La otra cosa a tener en cuenta es que cada dispositivo debe tener una cookie única. Por lo tanto, incluso si la dirección IP asociada con una cookie cambia normalmente, si ahora recibe solicitudes de esa cookie desde dos direcciones IP diferentes al mismo tiempo , es probable que tenga un problema.
Al final, la forma más sencilla de arreglar las cosas si parece que está pasando algo raro es simplemente invalidar todas las cookies (es decir, cerrar la sesión del usuario). El usuario legítimo solo tiene un pequeño inconveniente: solo tiene que volver a iniciar sesión. Aunque el atacante ha perdido todo acceso y debe volver a empezar.
La quita
Debería haber un par de conclusiones obvias de la discusión anterior:
- No hay una respuesta definitiva. Un atacante lo suficientemente inteligente tiene muchas maneras de tratar de ocultar que ha robado credenciales, una vez que son robadas.
- Un sistema que no haya configurado una seguridad / supervisión extensiva en torno a sus credenciales de inicio de sesión no tendrá forma de saber que algo está sucediendo ni de cómo reaccionar.
- No hay un punto claro "De acuerdo, ahora estás seguro". El sistema puede hacer muchas cosas para asegurar las credenciales de inicio de sesión, pero en última instancia, hay cosas que no están bajo el control del servidor y que pueden permitir el robo de credenciales. Hay formas de detectar las credenciales robadas, pero no siempre son fáciles o directas y pueden requerir mucho esfuerzo para configurarlas, ajustarlas y usarlas. También es posible ser demasiado entusiasta y causar problemas a los usuarios legítimos.
Entonces, ¿cómo minimizan los chicos grandes el daño potencial causado por las personas que se marchan con credenciales? Respuesta corta: Defensa en profundidad. Asegure las credenciales de acceso en todas las capas de la aplicación, supervise los metadatos de los clientes que usan credenciales de acceso y, en caso de duda, cierre la sesión.