$_SESSION frente a $_COOKIE

aprendí sobre $_SESSION hace unas semanas al crear una página de inicio de sesión. Puedo iniciar sesión con éxito y usarlo con variables. Actualmente estoy tratando de entender $_SESSION y $_COOKIE. Por favor corrígeme si me equivoco, puedo usar $_SESSION al iniciar sesión y moverse por las páginas. Con $_COOKIE, se utiliza para recordar cuándo fui por última vez y preferencias.

Otra cosa relacionada con las cookies es que cuando los sitios web usan anuncios (por ejemplo: Google AdSense), usan las cookies para rastrear cuando el visitante hace clic en un anuncio, ¿verdad?

Puedo usar ambos ($_SESSION & $_COOKIE)? Leí en alguna parte que puedes almacenar el session_id como valor para la cookie.

Además, leí sobre seguridad que me permitió encontrar esto: ¿Qué necesito almacenar en la sesión php cuando el usuario inicia sesión?. Esta usando session_regenerate_id bueno para cuando un usuario vuelve al sitio?

Y esto: Cómo almacenar una cookie con php que implica uniqid.

Para aquellos que quieran saber sobre el inicio de sesión, uso correo electrónico y contraseña. De esa manera, el usuario puede cambiar su nombre de usuario.

Espero aprender más sobre estos dos de cualquiera que quiera compartir su conocimiento al respecto. Si hice demasiadas preguntas, puede responder solo aquella con la que tenga más experiencia.

Si necesita más información, solo pregunte ya que podría haber olvidado incluir algo.

Gracias.


Encontré esto: ¿Qué riesgos debo tener en cuenta antes de permitir que se coloquen anuncios en mi sitio web?

preguntado el 02 de julio de 12 a las 02:07

La sesión es un almacenamiento del lado del servidor, cookie - lado del cliente. Esa es la gran diferencia -

Después de autenticar a un usuario, debe volver a generar la identificación de la sesión. Las personas pueden secuestrar la sesión si conocen la identificación de la sesión y luego obtener acceso a información que no deberían tener. Al regenerar después de la autenticación, en gran medida lo está eliminando. Además, como práctica estándar, si no conoce todas las implicaciones, no coloque la identificación de la sesión en la URL. -

@phpmeh: "Después de autenticar a un usuario, debe regenerar la identificación de la sesión"; no hay razón para eso. "Las personas pueden secuestrar la sesión si conocen la identificación de la sesión" --- si pudieran obtener la identificación de la sesión, entonces la regeneración no agrega nada -

1 Respuestas

En lenguaje sencillo, $_SESSION y $_COOKIE son diferentes. Ambos son php globales, pero las cookies se utilizan sin limitación de idioma. $_SESSION se trata de almacenar los datos en el servidor mientras se almacena la identificación de la sesión como una cookie. $_COOKIE son las galletas que navegador envía al servidor Esta es la principal diferencia. Las sesiones no funcionan si el navegador del cliente tiene las cookies deshabilitadas.

- Seguridad -

Si marcó los encabezados de solicitud que envía su navegador, notará que cada solicitud tiene información de cookies. Se pueden rastrear cortando la comunicación de su red. Cualquier persona con mejores herramientas puede editar los datos de las cookies. ¡nunca use cookies para almacenar contraseñas! Si usa sesiones, las contraseñas están en el servidor y solo la cookie de identificación de la sesión se almacenará en el cliente, la reducción de el problema de la seguridad Chuck Norris todavía puede secuestrar una sesión.

- Rendimiento -

Si almacena 5 cookies en el navegador con 200 bytes, eso cuesta ~ 1 KB de datos en todos y cada uno solicitud sin importar si es un archivo jpg o una página que realmente necesita la información de la cookie. Entonces, esto afecta directamente la rapidez con la que su sitio puede funcionar para el usuario final.

si usa sesiones, el servidor tiene estos datos de 1 KB mientras que el cliente envía la ID de sesión en cada solicitud de página. Puede ser inteligente al cambiar los archivos estáticos a otro dominio sin cookies.

- Toda la vida -

Las sesiones se borran a tiempo. Entonces, si desea guardar algo durante mucho tiempo, use cookies en su lugar. La funcionalidad "recordarme" de la mayoría de los sitios funciona de esta manera (aún así, no almacena la contraseña. Solo la información de la sesión, que no debe confundirse con la ID de la sesión).

En pocas palabras, las sesiones y las cookies son de diferentes tipos. sesión es relativamente seguro y almacenamiento del lado del servidor. se borra a menudo. Las cookies pueden tener una vida útil más larga, pero afectan el rendimiento (no la CPU/RAM, sino los tiempos de carga), a menos que no lo tenga en cuenta. Sin embargo, es extremadamente extraño si hay una razón para almacenar 1 KB como cookies.

Nunca confíes en la entrada del usuario que llega $_GET/POST. Haz el mismo cuidado con $_COOKIE también. Y hay secuestro de sesión. Alguien puede adivinar el ID de sesión de otra persona, aunque es casi imposible hacerlo. Así que use alguna validación en el lado del servidor primero.

Respondido 08 Jul 12, 22:07

Entonces, ¿la cookie que tiene almacenada la identificación de la sesión es una cookie que puedo ver? Como cuando uso IE, puedo encontrar la carpeta con las cookies de diferentes sitios dentro. Y si Chuck Norris secuestra una sesión, Bruce Lee sería mi seguridad. - hieimora

sí, la identificación de la sesión se almacena en una cookie. es por eso que las sesiones no funcionan cuando las cookies están deshabilitadas. - AKS

Hmm ya veo. Entonces, cuando uso cookies, uso session_id como valor. - hieimora

deja que php haga eso por ti. $_COOKIE['popup'] puede contener el valor de la cookie "emergente". Del mismo modo, $_SESSION['form_key'] puede contener el valor form_key del almacenamiento de sesión del servidor con el ID de sesión enviado por el cliente. - AKS

Bien. Entonces, si quiero recordarme, solo debería tener el valor como correo electrónico, ¿verdad? Si tengo anuncios, leerá la cookie creada desde la sesión de php. - hieimora

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.