Almacenamiento de OAuth y otros tokens de autenticación

11

Todos sabemos que, cuando se almacenan contraseñas, debemos guardarlas con un hash unidireccional, como una variante de SHA, bcrypt o scrypt para evitar filtraciones de contraseña de texto sin formato cuando se hackea la base de datos.

Pero ¿qué pasa con los tokens de OAuth? ¿Cómo debería uno almacenar token de acceso a Facebook? Twitter token de acceso? ¿Debo guardarlo como texto plano? ¿Cifrarlo con AES y una clave de sitio? ¿O alguna forma más segura de almacenarlo?

(Siempre que la aplicación haya solicitado solo el alcance del token esencial de Facebook y la aplicación tenga buenas razones para almacenar el token)

    
pregunta willwill 27.10.2012 - 19:21
fuente

1 respuesta

2

Si es posible, ¡no almacene tokens de OAuth! El almacenamiento de tokens de OAuth hace que sus usuarios sean susceptibles a un vector de ataque del que no tienen conocimiento.

Si debe almacenar los tokens de OAuth, AES los cifrará con la mejor clave que pueda usar para este propósito. Si los usuarios usan una contraseña para ingresar a su sitio, genere una clave AES basada en la contraseña de texto simple de cada usuario (por ejemplo, utilizando PBKDF2) y cifre el token OAuth de cada usuario con su clave AES.

Use una clave de sitio solo como último recurso si no existen otras opciones y haga lo mejor para asegurar la clave de sitio según la respuesta de @ tylerl a ¿Dónde almacenar una clave para el cifrado? . Pero como escribió @tylerl, "no hay una buena respuesta".

Entonces, nuevamente, si es posible, ¡no almacene tokens de OAuth!

    
respondido por el David Wachtfogel 27.10.2012 - 22:42
fuente

Lea otras preguntas en las etiquetas