Foros del Web » Programando para Internet » PHP »

Duda de seguridad

Estas en el tema de Duda de seguridad en el foro de PHP en Foros del Web. Estoy haciendo un portal en el que el usuario puede identificarse y mantener la sesion mediante cookies ya que puede cerrar y abrir el navegador ...
  #1 (permalink)  
Antiguo 14/04/2010, 01:27
Avatar de juanolo  
Fecha de Ingreso: abril-2008
Mensajes: 251
Antigüedad: 16 años
Puntos: 5
Pregunta Duda de seguridad

Estoy haciendo un portal en el que el usuario puede identificarse y mantener la sesion mediante cookies ya que puede cerrar y abrir el navegador y seguiria logado.

El sistema que tengo montado es el siguiente...
- Cuando entra alguien compruebo si existen mis cookies con un nombre especifico.
- Si existen... compruebo el contenido de las mismas (usuario, password) con la base de datos.
- Si coincide el usuario en la base de datos... creo variables de sesion (id_usuario, nombre_usuario) y en las secciones privadas podra entrar siempre y cuando existan esas sesiones.
- Si NO coincide el usuario en la base de datos... no creo ninguna sesion y al no existir esas sesiones no puede entrar a las paginas privadas (les saco con un header ('location ./index');

Ahora mismo, la clave la guardo en la base de datos y en la cookie a pelo, sin encriptar ni pasarlo por MD5 ni nada y claro... si ves la cookie, en ella pone perfectamente "cliente_usuario pepitogrillo clave_usuario 12345

Imagino, que deberia "encriptar" la clave con MD5 en la base de datos y en la cookie.

Asi, si viene un listillo y espia las cookies, aunque sepa que ese codigo largo MD5 es la clave... como no la puede "desencriptar" no habria problema no? Pero ahora... si el listillo la ve, se la apunta en un papel y se va a su casa... siempre podra entrar en la cuenta del otro sin que este otro se de cuenta, por que ya se sabe el usuario y la contraseña, entonces, siempre "encriptar" con MD5.

Este sistema estaria bien (aplicandole el MD5)? o correria todavia algun riesgo?
  #2 (permalink)  
Antiguo 14/04/2010, 01:29
Avatar de AdrianSeg  
Fecha de Ingreso: enero-2010
Mensajes: 595
Antigüedad: 14 años, 2 meses
Puntos: 14
Respuesta: Duda de seguridad

MD5 es un sistema medianamente cracekable...seria preferible meter md5+SALT que tmb se puede crackear pero el proceso es mucho más arduo y complejo.
  #3 (permalink)  
Antiguo 14/04/2010, 01:34
 
Fecha de Ingreso: septiembre-2004
Mensajes: 324
Antigüedad: 19 años, 7 meses
Puntos: 13
Respuesta: Duda de seguridad

Aqui no importa lo crackeable que sea el sistema.
Lo de robar cookies no es nada nuevo sabes?
Antes para robar cookies que engañaba al usuario para que entrara en una web y con javascript utilizando document.write s escribia su coockie en algun sitio y se le robaba la cookie, no es nada nuevo, no creo que puedas hacer mucho contra eso.

Ah, y mirate las top 5 vulnerabiliades tipicas de php
http://www.owasp.org/index.php/PHP_Top_5
  #4 (permalink)  
Antiguo 14/04/2010, 01:38
Avatar de juanolo  
Fecha de Ingreso: abril-2008
Mensajes: 251
Antigüedad: 16 años
Puntos: 5
Pregunta Respuesta: Duda de seguridad

Cita:
Iniciado por karliky Ver Mensaje
Aqui no importa lo crackeable que sea el sistema.
Lo de robar cookies no es nada nuevo sabes?
Antes para robar cookies que engañaba al usuario para que entrara en una web y con javascript utilizando document.write s escribia su coockie en algun sitio y se le robaba la cookie, no es nada nuevo, no creo que puedas hacer mucho contra eso.

Ah, y mirate las top 5 vulnerabiliades tipicas de php
http://www.owasp.org/index.php/PHP_Top_5
Entonces, ante el robo de una cookie no se puede hacer nada?

...es que ahora que caigo...

Si guardo la password en la cookie con MD5 y un usuario abre el navegador, entra en la web y yo compruebo si existen esas cookies y su contenido...

yo lo que hago es esto...
¿Existen las cookies (usuario,contrasñea)? SI
Pues compruebo en la base de datos ese usuario y contraseña...
Si coincide, entra.

Pero claro...
Si en la cookie viene la clave en MD5 y en la base de datos tambien en MD5 la consulta que haria seria..
Select id, nombre_usuario FROM usuarios WHERE nombre_usuario=$_COOKIE['nombre_usuario'] AND clave=$_COOKIE['clave']

Y cualquier persona que tenga esa cookie en su poder podria entrar sin aun saber la contraseña, porque en la base de datos simplemente compruebo si coincide el nombre de usuario y la clave MD5 en la base de datos.

Seria efectivo este sistema si se quiere logar desde la web (puesto que mete la clave a pelo que nadie sabe y luego yo lo paso a MD5 y hago la comprobacion) pero con la cookie no pasa, en la cookie es como si guardara tambien la clave a pelo porque tambien la estoy guardando en MD5 y hago la comparacion directa en MD5.

No se si me explico.
  #5 (permalink)  
Antiguo 14/04/2010, 02:33
Avatar de Midal  
Fecha de Ingreso: febrero-2010
Ubicación: Valencia
Mensajes: 60
Antigüedad: 14 años, 2 meses
Puntos: 9
Respuesta: Duda de seguridad

Lo suyo es crear una ID o password de sesión, es decir una contraseña que se genera en cada nueva sesión una vez ha entrado el usuario, guardar la clave en una cookie no es nada seguro.

Por otro lado te recomiendo usar sesiones de PHP y comprobar que usuario/password temporal/IP coinciden, así no podran usarse las cookies desde equipos con distinta IP a donde enviaste la cookie.
__________________
Juego de carreras
  #6 (permalink)  
Antiguo 14/04/2010, 03:47
Avatar de juanolo  
Fecha de Ingreso: abril-2008
Mensajes: 251
Antigüedad: 16 años
Puntos: 5
Respuesta: Duda de seguridad

Cita:
Iniciado por Midal Ver Mensaje
Lo suyo es crear una ID o password de sesión, es decir una contraseña que se genera en cada nueva sesión una vez ha entrado el usuario, guardar la clave en una cookie no es nada seguro.

Por otro lado te recomiendo usar sesiones de PHP y comprobar que usuario/password temporal/IP coinciden, así no podran usarse las cookies desde equipos con distinta IP a donde enviaste la cookie.
¿Y como seria el funcionamiento?

Porque si el usuario cierra el navegador, las sessiones se pierden.
Cuando el usuario vuelve a abrir el navegador y entra en la web, yo compruebo las cookies que tenga...

¿Como compruebo que ese usuario es legal desde las cookies para volver a crear una session sin comprometer la seguridad?
¿Como es esa ID de session temporal? ¿Al cerrar el navegador no tendra que volverse a identificar de nuevo? en tal caso no necesitaria cookies, pero las quiero para recordar su session y que el user no tenga que volver a logar.
  #7 (permalink)  
Antiguo 14/04/2010, 06:39
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 5 meses
Puntos: 5
Respuesta: Duda de seguridad

Lo q te dice Midal es lo que por ahora veo más correcto. Pasa q las cookies dependen del usuario, y no de tu server. Por tanto no deberías basar una solución ruda de seguridad en el uso de cookies. Esto sería válido por ejemplo, para un PC personal. ¿Q pasa si es de múltiple uso?
No lo puedes controlar............
En Internet hay algunos tutos de seguridad de sesiones
aquí, y aquí quizás te puedan ayudar
  #8 (permalink)  
Antiguo 16/04/2010, 02:06
Avatar de juanolo  
Fecha de Ingreso: abril-2008
Mensajes: 251
Antigüedad: 16 años
Puntos: 5
Pregunta Respuesta: Duda de seguridad

Cita:
Iniciado por eulloa Ver Mensaje
Lo q te dice Midal es lo que por ahora veo más correcto. Pasa q las cookies dependen del usuario, y no de tu server. Por tanto no deberías basar una solución ruda de seguridad en el uso de cookies. Esto sería válido por ejemplo, para un PC personal. ¿Q pasa si es de múltiple uso?
No lo puedes controlar............
En Internet hay algunos tutos de seguridad de sesiones
aquí, y aquí quizás te puedan ayudar
¿Entonces que me recomendais?
Mejor me olvido de las cookies y hago sesiones con MD5 y ya?
  #9 (permalink)  
Antiguo 16/04/2010, 06:46
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 5 meses
Puntos: 5
Respuesta: Duda de seguridad

Aunque te "olvides" de las cookies, siempre van a existir cuando uses sesiones. (enable_trans_sid)
Podrías por ejemplo, después de la validación del login, generar una cadena aleatoria encriptada, y guardarla en la BD, al refrescar la página la cadena sesion se compararía contra la BD y si son idénticas, es una sesión válida, sino pués existe algún fallo.
No se si me he explicado muy bien ??????????

Etiquetas: seguridad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:15.