Hola ,
Queria saber si es posible leer una cookie de rails desde una aplicacion
externa, especificamente desde una aplicacion merb.
con merb puedo leer el session.session_id de la cookie de rails , pero
no se
como leer la cookie para sacar los valores de la session , como un
session[:user_id] etc…
o bien , ¿es posible des-encriptar la cookie para leer su contenido
en otra aplicacion?
No creo que pueda hacer esto pero lo que puedes hacer para hablar
entre los dos frameworks es utilizar la base de datos como manejador
de sesiones, teniendo el session_id podrías obtener la información
desde la BD.
De no hacerlo, estarás perdiendo la comprobación de identidad. Yo
cambio la sesión los datos para aparentar ser otro usuario y tan
pancho. Tienes que copiar la salt de rails a merb, para poder hacer la
comprobación de autenticidad.
def unmarshal(cookie)
if cookie
data, digest = CGI.unescape(cookie).split(‘–’)
unless digest == generate_digest(data)
delete
raise TamperedWithCookie
end
Marshal.load(ActiveSupport::Base64.decode64(data))
end
end
Y si añades este otro:
def marshal(session)
data = ActiveSupport::Base64.encode64(Marshal.dump(session)).chop
“#{data}–#{generate_digest(data)}”
end
Ya las tienes en los dos sentidos.
(
)
Lo que me llama la atención, es que por lo que veo, y salvo que me
pierda, la cookie, no es encriptada, si no que simplemente firmada.
Vamos, que aunque no sirva de nada para nuestra aplicación si yo
guardo en la sesión el número de serie de mi cuenta del banco
cualquiera puede ver la cookie.
Vamos, que aunque no sirva de nada para nuestra aplicación si yo
guardo en la sesión el número de serie de mi cuenta del banco
cualquiera puede ver la cookie.
Es correcto, solo se codifica pero la cookie va en claro y tiene
mecanismo para detectar que se haya modificado. Por ello se advierte
que no vaya informacion sensible. Esto liga a su vez con mejores
practicas web, donde en sesion se pone por lo general poco mas que un
user_id y un mensaje flash.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.