2010-05-03 22 views
14

Acabo de empezar a buscar en OAuth y se ve muy bien. Tengo oauth with twitter working en ruby ​​en este momento.¿Forma correcta de almacenar de forma segura el token/secreto/etc. de OAuth?

Ahora me pregunto, ¿cuál es la forma segura recomendada de almacenar las respuestas en mi base de datos local y sesión?

  • ¿Qué lugar debo almacenar?
  • ¿Dónde debería guardarlo?

Este ejemplo twitter-oauth-with-rails tiendas de aplicaciones un user.id en la sesión, y la tabla de usuario tiene la token y secret. Pero parece que sería realmente fácil hackear y obtener el secreto al solo pasar una serie de identificaciones de usuario de prueba, ¿no?

Respuesta

1

Si está desarrollando una aplicación web, puede agregar un campo hidden a la forma que el usuario envía, con un valor tipo hash calculado con el user.id para que los tipos malvados no puedan cambiar ese valor y simplemente "adivinar" un acceso token

6

Los tokens son inútiles sin la clave de consumidor/secreto de su aplicación de Twitter ya que no son los mismos para cada aplicación, pero dependen de la clave/secreto del consumidor.

Para obtener una variable de sesión, tendría que adivinar la identificación de la sesión, que no es tan fácil de lograr.

Si lo desea, puede almacenar esos tokens en la sesión, pero le sugiero que almacene los tokens de usuario en su base de datos con todos los demás datos del usuario para que su sesión contenga solo los datos para identificar al usuario en su sistema.

Actualización: No estoy seguro de entender correctamente lo que quiere decir al acceder a los tokens de la base de datos adivinando una identificación.

¿Tiene alguna autenticación establecida para que los usuarios tengan que ingresar algunas credenciales para acceder a sus datos? Debe almacenar los tokens de la misma manera que almacena la dirección de correo electrónico o la contraseña de los usuarios, y solo los usuarios autenticados deberían poder acceder a ellos.

+0

gracias, esto es útil. Solo intento comprender realmente la mejor manera de hacerlo porque muchas personas han dicho que nunca almacenen ningún tipo de datos confidenciales en la sesión. pero parecía que era posible acceder a un modelo de usuario desde la base de datos por id si estaba en la sesión, si el desarrollador dejó algo expuesto. algo como eso. –

+0

Los datos de la sesión no son accesibles para el usuario, ya que solo conocen la identificación de la sesión pero no lo que está almacenado en la sesión. La única forma de acceder a los datos de la sesión para otro usuario es usar el secuestro de sesión, pero no es solo reemplazar un número pequeño por otro. Vea aquí: http://en.wikipedia.org/wiki/Session_hijacking –

+0

Si lo piensa, no hay otra manera de decirle a qué usuario pertenece la sesión, ya que solo puede usar cookies y eso es lo que hacen las sesiones, pero más seguro. que simplemente almacenar la identificación del usuario en la cookie. –

Cuestiones relacionadas