Foros del Web » Programando para Internet » PHP »

Token y seguridad

Estas en el tema de Token y seguridad en el foro de PHP en Foros del Web. Saludos colegas. Resulta que me viene una duda respecto a la seguridad y los tocken. He estado leyendo sobre la seguridad web para inicio de ...
  #1 (permalink)  
Antiguo 29/10/2019, 13:40
Avatar de leonaryoel  
Fecha de Ingreso: octubre-2013
Ubicación: Villa Clara
Mensajes: 64
Antigüedad: 6 años
Puntos: 0
Token y seguridad

Saludos colegas. Resulta que me viene una duda respecto a la seguridad y los tocken.
He estado leyendo sobre la seguridad web para inicio de sesión y manejo de sesiones php ($_SESSION). En lo que he leido se recomienda no guardar los usuarios y claves en las cookies, por logica, esto es fatal. En cambio recomiendan crear un token que te sirva para identificar al usuario y que cambie cada vez que se inicia sesión. Luego en la parte donde evalúas el usuario y contraseña desde el formulario de inicio de sesión, agrega un if donde verifiques si la cookie existe, buscar el token que contiene y si corresponde a algún usuario entonces usa esos datos.

Todo correcto, la duda mia es.. por ejemplo, a la hora de crear el usuario le asigno un toker único en la BD en un campo. Y al abrir la web compruebo si la cookie token existe y comparo, si existe inicio sesion y cambio la token actualizandola en la BD.

Si yo lo hago de esta manera, y salgo de la web, la cookie token permanece registrando el token de ese usuario la cual esta en BD. Si alguien me extrae la cookie token de mi usuario supongo que la puede usar, ya que al usarla esa cookie que tiene al ser comprobada va a ser igual que la existente en BD ciento?

Si es así mi seguridad se fue a la mierda... Como puedo prevenir esto. A lo mejor soy yo el que no entiende el concepto de ¨crear un token que te sirva para identificar al usuario y que cambie cada vez que se inicia sesión¨....

Por favor alguien que me pueda explicar mejor, he leido sobre esto y es todo loque logro entender...
  #2 (permalink)  
Antiguo 29/10/2019, 15:24
 
Fecha de Ingreso: julio-2004
Mensajes: 323
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Tocken y seguridad

Buenas tardes amigo. puede tomar la variable del usuario y generar el token, en una tabla aparte relaciona el id del usuario o el identificador que utilices y relacionalo con el usuario. guardas registro en la cookie del token y a su vez almacenas el tiempo de vencimiento del mismo. lo mismo haces en la base de datos. una vez vencido el token de la cookie coloca en el sistema la opcion de eliminar el registro de la base de datos para ese token al cerrarse la sesion o caducar. tambien debes tener en cuenta que la tabla en la que registras el token debes colocar el tiempo de caducidad. si no lo colocas entonces el token quedara abierto por lo cual no se borrara el registro que te da la validacion y alli si podran reutilizar los tokens ya utilizados.
  #3 (permalink)  
Antiguo 29/10/2019, 22:42
 
Fecha de Ingreso: abril-2006
Mensajes: 313
Antigüedad: 13 años, 6 meses
Puntos: 60
Respuesta: Tocken y seguridad

Cita:
Iniciado por leonaryoel Ver Mensaje
Saludos colegas. Resulta que me viene una duda respecto a la seguridad y los tocken.
He estado leyendo sobre la seguridad web para inicio de sesión y manejo de sesiones php ($_SESSION). En lo que he leido se recomienda no guardar los usuarios y claves en las cookies, por logica, esto es fatal. En cambio recomiendan crear un token que te sirva para identificar al usuario y que cambie cada vez que se inicia sesión. Luego en la parte donde evalúas el usuario y contraseña desde el formulario de inicio de sesión, agrega un if donde verifiques si la cookie existe, buscar el token que contiene y si corresponde a algún usuario entonces usa esos datos.

Todo correcto, la duda mia es.. por ejemplo, a la hora de crear el usuario le asigno un toker único en la BD en un campo. Y al abrir la web compruebo si la cookie token existe y comparo, si existe inicio sesion y cambio la token actualizandola en la BD.

Si yo lo hago de esta manera, y salgo de la web, la cookie token permanece registrando el token de ese usuario la cual esta en BD. Si alguien me extrae la cookie token de mi usuario supongo que la puede usar, ya que al usarla esa cookie que tiene al ser comprobada va a ser igual que la existente en BD ciento?

Si es así mi seguridad se fue a la mierda... Como puedo prevenir esto. A lo mejor soy yo el que no entiende el concepto de ¨crear un token que te sirva para identificar al usuario y que cambie cada vez que se inicia sesión¨....

Por favor alguien que me pueda explicar mejor, he leido sobre esto y es todo loque logro entender...
lo que debes hacer, en caso de que hipoteticamente se roben la cookies, eso suele pasar mas por fallo del usuario, por no tener un navegador actualizado o iniciar session en un cafe internet donde tienen sniffers y demas

quieres reforzar la seguridad de tu web, pues usa SSL
en tu cookie de session Aparte de ponerle tiempo de caducidad, debes guardar otro tipo de informacion, que venga relacionado a la cookie, como por EJEMPLO "IP", "Tipo de Navegador" asi si alguien le roba la cookie, para usar esa cookie, debera tambien tener la IP de la cookie y tener las mismas cabeceras de navegador , cosa que se puede lograr hacer, pero eso ya seria fallo del usuario, por ejemplo lo de falsear la IP es muy dificil de hacerlo, y dificil me refiero a tener equipos muy costosos o millares de equipos para hacer IP SPOOF, etc.

asi que con las 2 cosas que te indique como el IP y las cabeceras de navegador, estaras sobrado, almenos que en tu web, sea informacion de alto secreto, de transacciones muy pero muy delicadas, de apuestas ilegales , trata y trafico, venta de marcianos , etc etc.

para eso lo comun es usar CONEXION Activa y encriptada, en WEB el equivalente seria WEBSOCKET sobre SSL, o para mucho mas seguridad, crearte tu propio protocolo de seguridad con encriptacion de datos
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.me/pools/c/87BTML2gwr
  #4 (permalink)  
Antiguo 30/10/2019, 07:41
Avatar de leonaryoel  
Fecha de Ingreso: octubre-2013
Ubicación: Villa Clara
Mensajes: 64
Antigüedad: 6 años
Puntos: 0
Información Respuesta: Tocken y seguridad

Cita:
Iniciado por tuadmin Ver Mensaje
lo que debes hacer, en caso de que hipoteticamente se roben la cookies, eso suele pasar mas por fallo del usuario, por no tener un navegador actualizado o iniciar session en un cafe internet donde tienen sniffers y demas

quieres reforzar la seguridad de tu web, pues usa SSL
en tu cookie de session Aparte de ponerle tiempo de caducidad, debes guardar otro tipo de informacion, que venga relacionado a la cookie, como por EJEMPLO "IP", "Tipo de Navegador" asi si alguien le roba la cookie, para usar esa cookie, debera tambien tener la IP de la cookie y tener las mismas cabeceras de navegador , cosa que se puede lograr hacer, pero eso ya seria fallo del usuario, por ejemplo lo de falsear la IP es muy dificil de hacerlo, y dificil me refiero a tener equipos muy costosos o millares de equipos para hacer IP SPOOF, etc.

asi que con las 2 cosas que te indique como el IP y las cabeceras de navegador, estaras sobrado, almenos que en tu web, sea informacion de alto secreto, de transacciones muy pero muy delicadas, de apuestas ilegales , trata y trafico, venta de marcianos , etc etc.

para eso lo comun es usar CONEXION Activa y encriptada, en WEB el equivalente seria WEBSOCKET sobre SSL, o para mucho mas seguridad, crearte tu propio protocolo de seguridad con encriptacion de datos
Buena respuesta amigo, me gusto mucho esa idea de almacenar por demas la IP e información del navegador....

Dejo el tema abierto para si alguien más desea continuar aportando a la seguridad web con PHP. Creo que es un tema interesante y del cual se pueden exponer experiencias...

Una ves más agradecido...
  #5 (permalink)  
Antiguo 01/11/2019, 07:54
Avatar de leonaryoel  
Fecha de Ingreso: octubre-2013
Ubicación: Villa Clara
Mensajes: 64
Antigüedad: 6 años
Puntos: 0
Respuesta: Token y seguridad

A ver compañeros, tengo otra duda respecto a la conversación anterior.

Ya he realizado mi sistema donde al iniciar sesion se crea la session['user'] y si tiene marcada la casilla de recordar credenciales haga setcookie con mis 3 cookies(tipo de navegador, ip, token), esta cookie la pude a expirar con los parametros de setcookie asi: time()*60*60*30 y solo guardo en la BD el token asociado al identificador de usuario.

Ahora, al hacer un var_dumb a $_COOKIES veo que existe PHPSESSID (por logica si llamo a un session_start se crea esta) además de mis otras cookies. He logrado hacer que si la cookie token existe entonces consulte en la BD a ver de quien es y si coincide el tipo de navegador y el IP entonces muestre la pagina home, sino entonces muestre la página de login.

Hata ahí todo bien, el echo es que mi $_SESSION['user'] se esta quedando activa cuando cierro mi pestaña. Esto lo se pq al hacer login sin marcar la casilla de recordar credenciales las cookies no se crean, pero igual yo digo que si la cookie no existe pero existe la sision, me abra el home y no el login, y cuando me logueo y cierro la pestaña del navegador me sigue mostrando el home cuando deberia llebarme al login.

Entonces al hacer var_dumb a $_COOKIES solo veo la PHPSESSID, porqu elas otras cookies no se crearon pq no le di a recordar credenciales(eso esta bien), pero no debería destruir la sesión al cerrar la pestaña del navegador?

Cómo puedo lograr esto?

Otra duda. Si yo agreo ini_set('session.cookie_httponly', 1); puedo registrar las cookies mediante ajax y continuar usandolas normalmente?

Última edición por leonaryoel; 01/11/2019 a las 14:25
  #6 (permalink)  
Antiguo 01/11/2019, 20:23
 
Fecha de Ingreso: abril-2006
Mensajes: 313
Antigüedad: 13 años, 6 meses
Puntos: 60
Respuesta: Tocken y seguridad

Cita:
Iniciado por leonaryoel Ver Mensaje
A ver compañeros, tengo otra duda respecto a la conversación anterior.

Ya he realizado mi sistema donde al iniciar sesion se crea la session['user'] y si tiene marcada la casilla de recordar credenciales haga setcookie con mis 3 cookies(tipo de navegador, ip, token), esta cookie la pude a expirar con los parametros de setcookie asi: time()*60*60*30 y solo guardo en la BD el token asociado al identificador de usuario.

Ahora, al hacer un var_dumb a $_COOKIES veo que existe PHPSESSID (por logica si llamo a un session_start se crea esta) además de mis otras cookies. He logrado hacer que si la cookie token existe entonces consulte en la BD a ver de quien es y si coincide el tipo de navegador y el IP entonces muestre la pagina home, sino entonces muestre la página de login.

Hata ahí todo bien, el echo es que mi $_SESSION['user'] se esta quedando activa cuando cierro mi pestaña. Esto lo se pq al hacer login sin marcar la casilla de recordar credenciales las cookies no se crean, pero igual yo digo que si la cookie no existe pero existe la sision, me abra el home y no el login, y cuando me logueo y cierro la pestaña del navegador me sigue mostrando el home cuando deberia llebarme al login.

Entonces al hacer var_dumb a $_COOKIES solo veo la PHPSESSID, porqu elas otras cookies no se crearon pq no le di a recordar credenciales(eso esta bien), pero no debería destruir la sesión al cerrar la pestaña del navegador?

Cómo puedo lograr esto?

Otra duda. Si yo agreo ini_set('session.cookie_httponly', 1); puedo registrar las cookies mediante ajax y continuar usandolas normalmente?
en simples palabras, tu session sigue activa , hasta que cierres el NAVEGADOR, el cerrar tabs no es indicio de que cerraste session, pudiste darle erroneamente el cerrar la TAB; por es que ahora los navegadores, trabajan de ese modo, antes si contaba, como si cerraras session si quieres lograr el controlar si cierran el TAB, necesitaras de JAVASCRIPT con cookies y "sessionStorage" , con ello podras controlar si un TAB es cerrado o no,

con respecto a los datos como IP, navegador, esos datos, DEBEN ir dentro de la session, NO en una cookie, recuerda que no debes dar indicios de como haces verificacion de datos, por que una COOKIE si es robada, tambien robara las otras o incluso falsearlas
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.me/pools/c/87BTML2gwr
  #7 (permalink)  
Antiguo 04/11/2019, 07:43
Avatar de leonaryoel  
Fecha de Ingreso: octubre-2013
Ubicación: Villa Clara
Mensajes: 64
Antigüedad: 6 años
Puntos: 0
Respuesta: Tocken y seguridad

Cita:
Iniciado por tuadmin Ver Mensaje
en simples palabras, tu session sigue activa , hasta que cierres el NAVEGADOR, el cerrar tabs no es indicio de que cerraste session, pudiste darle erroneamente el cerrar la TAB; por es que ahora los navegadores, trabajan de ese modo, antes si contaba, como si cerraras session si quieres lograr el controlar si cierran el TAB, necesitaras de JAVASCRIPT con cookies y "sessionStorage" , con ello podras controlar si un TAB es cerrado o no,

con respecto a los datos como IP, navegador, esos datos, DEBEN ir dentro de la session, NO en una cookie, recuerda que no debes dar indicios de como haces verificacion de datos, por que una COOKIE si es robada, tambien robara las otras o incluso falsearlas
Entiendo amigo, gracias por tu explicación. Entiendo bien lo que me explicas y tienes razón.



La zona horaria es GMT -6. Ahora son las 21:26.