¿Cuáles son algunas de las mejores prácticas para la autenticación web basada en cookies?

11

Estoy trabajando en un pequeño proyecto paralelo con CGI y Python (la escalabilidad no es un problema y debe ser un sistema MUY simple).

Estaba pensando en implementar la autenticación usando cookies, y me preguntaba si existían las mejores prácticas establecidas.

Cuando el usuario se autentica con éxito, quiero usar cookies para averiguar quién inició sesión. ¿Qué, según las mejores prácticas, debe almacenarse en una cookie?

rdasxy
fuente

Respuestas:

12

Mejor caso: una identificación única que se relaciona con toda la otra información que necesita, que a su vez se almacena en una base de datos.

Hay momentos en que tiene sentido poner alguna otra información allí, pero son raros. Siempre debe preguntarse por qué, al menos cinco veces .

SSL protegerá a sus usuarios del secuestro de sesión pero, incluso entonces, nunca almacene información confidencial sin cifrar en una cookie. Es, esencialmente, almacenado en texto plano en el disco duro.

Finalmente, y lo más importante, proteja a su usuario contra ataques XSS y CSRF .

La protección XSS es generalmente tan simple como tener cuidado de dónde incluye Javascript, porque Javascript en otro servidor podría cambiarse sin su conocimiento, y este Javascript tiene acceso a datos de cookies. Entonces, si está utilizando la red de entrega de contenido de Evil Corp para servir su script jQuery, de repente pueden agregar código para enviarles las cookies de sus usuarios. No lo sabrías; tus usuarios no lo sabrían.

Descargue los scripts y publíquelos desde su propio servidor o use CDN muy confiables como Google o Yahoo.

La protección CSRF generalmente se realiza al tener un valor aleatorio en un campo oculto en un formulario. El valor se mantiene en la sesión para que cuando se vuelva a enviar el formulario, pueda verificar que proviene de la misma computadora.

La mayoría de los marcos web ahora tienen técnicas muy simples para incluir ese token.

pdr
fuente
3
  • Usa las banderas securey httpOnly.
  • Codifique los datos de la cookie de sesión y firme criptográficamente los datos codificados con un MAC. Verifique la firma en el servidor cada vez, antes de molestarse en decodificar los datos de la cookie de sesión. (Rails hace esto por defecto).
Yfeldblum
fuente