Foros del Web » Programando para Internet » PHP »

COOKIE vs SESSION

Estas en el tema de COOKIE vs SESSION en el foro de PHP en Foros del Web. Corillo es mi primer tema despues de haber escrito 710 mensaje yahooooo. Bueno este tema puede ser largo dependiendo de que tan detallada sea la ...
  #1 (permalink)  
Antiguo 07/06/2009, 01:14
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
COOKIE vs SESSION

Corillo es mi primer tema despues de haber escrito 710 mensaje yahooooo. Bueno este tema puede ser largo dependiendo de que tan detallada sea la respuesta. Ahora a lo que vine a preguntar.

Quisiera saber que diferencia hay entre Cookie y Session. PERO el Cookie se esta almacenando como un tipo de session que no se le declara el tiempo que va a durar el cookie

setcookie("NOMBRE_COOKIE", "INFO_COOKIE");

esto ocacionaria que el COOKIE no se vea en los archivos temporeros (que he buscado en varios navegadores a ver si se ve el cookie y no lo veo declarado) y tambien se destruye una vez se haya cerrado el navegador. Ya he leido varios temas que estan en el foro y este es uno de los que considero que me ha traido varias respuestas

http://www.forosdelweb.com/f18/probl...3/#post2537419

Pero no contesta esta pregunta que estoy haciendo. Tambien lei varios documentos a través de internet que me indican como se puede hackear con los COOKIE Y SESSION pero tampoco me contesta que diferencia hay entre un COOKIE que no le declaro el tiempo de uso y esto provoca lo que he mencionado anteriormente y SESSION que se destruye en un maximo de 20 minutos.

Sé que una persona puede en el navegador indicar que no se almacenen COOKIE que es una super desventaja y tambien sé que los SESSION se trabaja en el servidor.

Mi pregunta final consistiría de ¿que diferencia puede causar (eliminando lo que mencione anteriormente) un COOKIE que no se le declare tiempo y un SESSION? Tambien si es posible como yo puedo ver un COOKIE que no se le declara tiempo ya que he buscando en diferentes navegadores (Ej. FIREFOX, INTERNET EXPLORER, GOOGLE CHROME Y OPERA) y no aparece el COOKIE. Esto es para saber que tan facil se puede hackear un site que usa COOKIE que no se le declara tiempo.

Muchas gracias.

Última edición por abimaelrc; 07/06/2009 a las 01:25
  #2 (permalink)  
Antiguo 07/06/2009, 10:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: COOKIE vs SESSION

La diferencia básica es, las sesiones se almacenan en el servidor, pero para que PHP reconozca que sesión es de que cliente, se almacena una cookie en el cliente llamada PHPSESSID, esta tiene el número de sesión y enlaza al cliente con el servidor.

Esas cookies que no se almacenan las puedes ver (y editar) con Firefox y el complemento Firebug + Firecookie, en cualquier otro browser puedes hacer un alert(document.cookie) y te va a mostrar las cookies.

Saludos.
  #3 (permalink)  
Antiguo 07/06/2009, 13:37
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: COOKIE vs SESSION

Saludos:

Gracias por el mensaje. Trate de hacer lo de
alert(document.cookie) y sale vacio en diferentes navegadores que no sean firefox

Trate lo que dijiste de firefox y ya vi que muestra todas las COOKIES pero trate de modificarlas y cada vez que hago la modificación se desaparecen las cookies. Le di right click y sale editar la edite y cuando doy click a OK se desaparece.

Ahora la unica diferencia que he encontrado hasta ahora es que con las cookies con firefox se muestran los nombres (que es una super mega desventaja al usar las COOKIES) pero, vamos a suponer que tengo declarado un COOKIE llamado ID y al tratar de modificar para ver si sale la información de otra persona escribiendo otro ID en el COOKIE se borra automaticamente la información.

Mi pregunta sería entonces ¿para poder ver la información de la persona tendría que usar el navegador y la computadora de la persona si es que no ha cerrado el navegador, o se puede acceder a la información de otra persona modificando el ID desde otra computadora? Pero repito trate de modificar y se borraba ese COOKIE
  #4 (permalink)  
Antiguo 07/06/2009, 13:37
 
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 8
Respuesta: COOKIE vs SESSION

Hola abimaelrc,

Aunque parezcan iguales, cada una está pensada para cumplir una función determinada:

SESSION

Permite almacenar información que puede ser de utilidad durante la navegación de un usuario por el sitio web. Mientras dure la sesión, la información estará disponible para el código PHP cada vez que el usuario solicite una página. Algunos ejemplos de información que puede resultar interesante guardar en sesión:
  • Si el usuario se ha autenticado o no
  • Identificador del usuario que se ha autenticado
  • Productos añadidos a un carro de la compra
  • Datos de facturación y de dirección para hacer un pedido
  • etc.

Esta información se guarda en el servidor, en un fichero temporal, por lo que sólo es accesible desde el código PHP, pero no desde el navegador. Esto te permite poder almacenar información privada sin correr el riesgo de que algún hacker la vea.

Cuando la sesión finaliza, el fichero se elimina y los datos se pierden, por lo que si el usuario vuelve a acceder, se inicia una sesión nueva que no tiene nada que ver con la anterior y, por tanto, habrá que volver a solicitarle los datos (usuario, contraseña) o tendrá que volver a iniciar la compra seleccionando los productos...

El tiempo que dura la sesión realmente no es de 20 minutos. Este tiempo, que se puede modificar por código, indica el tiempo que ha de pasar sin actividad del usuario para que el servidor finalice la sesión; es decir, pasado este tiempo desde la última petición del usuario, el servidor considera que ya no está navegando por el sitio web, por lo que finaliza la sesión eliminando el fichero temporal.

COOKIE

También permite almacenar información durante la navegación del usuario, pero con el fin de usarla en futuras conexiones (futuras sesiones), más que en la misma sesión. Ejemplos de información que podría ser interesante guardarla en la cookie:
  • Si el usuario ha marcado el check para recordar usuario y contraseña
  • El usuario y la contraseña introducidas por el usuario, para que cuando vuelva a nuestro sitio web, se autentique automáticamente sin solicitar otra vez usuario y contraseña
  • El idioma seleccionado por el usuario la ultima vez que accedió, para mostrarle directamente la página en ese idioma y no solicitarle que elija el idioma cada vez que entre.
  • El último producto que compró (si el sitio web es una tienda online) para mostrarle ofertas de productos relacionados
  • etc.

Y como bien dice GatorV, también se guarda el identificador de la sesión, para poder identificar el fichero temporal con los datos de sesión.

La cookie se guarda en el PC del usuario y se envía al servidor cada vez que se hace una petición, de esta manera se puede acceder a los datos guardados desde el código PHP y modificarlos o procesarlos. En el PC se puede acceder a través del sistema de ficheros; sólo hay que saber dónde la guarda cada navegador. En el caso de Internet Explorer, se guarda en la carpeta de ficheros temporales de internet.

Debido a la función que ejerce la cookie, no tiene una duración determinada. En principio, está siempre disponible mientras el usuario no la elimine. En cualquier caso, dado que se guarda en el PC del usuario, considero que debes usarla con precaución y no almacenar información que pudiera poner en riesgo la seguridad de tu sitio web.

Espero que esta explicación te sirva de algo.

Un saludo,
Carlos.
  #5 (permalink)  
Antiguo 07/06/2009, 13:41
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: COOKIE vs SESSION

ruizdeeguilaz Tienes razon pero eso es si declaro el tiempo. Yo estoy creando las COOKIES sin tiempo determinado asi que cada vez que se cierra el navegador se borra automaticamente. Por lo tanto mi pregunta es mientras esta arriba el navegador como se puede hackear a una cuenta que se esta almacenando en la computadora pero es mientras esta arriba el navegador.
  #6 (permalink)  
Antiguo 07/06/2009, 14:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: COOKIE vs SESSION

Si ves el Manual la función setcookie() hay varios parámetros que si no los especificas estos se pasan los de por defecto.

Ahora, el editar las cookies hay varias formas, lo importante es que entiendas su funcionamiento, cuando tu haces un request HTTP, el browser en las cabeceras te envia un elemento Cookie: con el valor de la cookie, este se puede modificar muy fácilmente si haces un spoof de un request HTTP, ya que es el comportamiento natural de el protocolo HTTP.

Lo que hace un hacker no es usar Firefox o Internet Explorer, si no hace un programa que haga un request HTTP a su gusto.

Si buscas la extensión LiveHeaders puedes ver como es que se comportan los headers y como es muy sencillo pasar otro valor en las cookies.

Es por eso que solo se usan para guardar datos que no sean vulnearables, como preferencias del usuario, etc.

Saludos.
  #7 (permalink)  
Antiguo 07/06/2009, 14:12
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: COOKIE vs SESSION

O sea usando cURL?
  #8 (permalink)  
Antiguo 07/06/2009, 16:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: COOKIE vs SESSION

cURL es una forma de hacerlo con PHP, también con fsockopen puedes hacer un request HTTP. En otros lenguajes hay otras herramientas, y lo puedes usar desde consola también usando wget (existe para varios sistemas operativos).

Saludos.
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 07:57.