Empecé a usar PHP hace un par de meses. En aras de crear un sistema de inicio de sesión para mi sitio web, leí sobre las cookies y las sesiones y sus diferencias (las cookies se almacenan en el navegador del usuario y las sesiones en el servidor). En ese momento, prefería las cookies (¡¿y a quién no le gustan las cookies ?!) y solo dije: "¿a quién le importa? mi proyecto de graduación de bachiller. Sin embargo, después de hacer la mayor parte de mi aplicación, escuché que para el caso particular de almacenar la identificación del usuario, las sesiones son más apropiadas. Entonces comencé a pensar en qué diría si el jurado me pregunta por qué has usado cookies en lugar de sesiones. Solo tengo esa razón (que no necesito almacenar internamente información sobre el usuario).? o es más que eso?
¿Podría contarme acerca de las ventajas / desventajas de usar cookies para mantener la identificación del usuario?
¡Gracias por todos ustedes en StackOverflow!
Respuestas:
El concepto es almacenar datos persistentes en las cargas de página para un visitante web. Las cookies lo almacenan directamente en el cliente. Las sesiones usan una cookie como una especie de clave, para asociarse con los datos almacenados en el lado del servidor.
Se prefiere usar sesiones porque los valores reales están ocultos para el cliente, y usted controla cuándo caducan los datos y dejan de ser válidos. Si todo se basara en cookies, un usuario (o hacker) podría manipular sus datos de cookies y luego reproducir solicitudes en su sitio.
Editar: no creo que haya ninguna ventaja al usar cookies, aparte de la simplicidad. Míralo de esta manera ... ¿Tiene el usuario alguna razón para conocer su número de identificación? Por lo general, diría que no, el usuario no necesita esta información. Dar información debe limitarse en función de la necesidad de saber. ¿Qué sucede si el usuario cambia su cookie para tener una ID diferente, cómo responderá su aplicación? Es un riesgo de seguridad.
Antes de las sesiones estaban de moda, básicamente tenía mi propia implementación. Almacené un valor de cookie único en el cliente y almacené mis datos persistentes en la base de datos junto con ese valor de cookie. Luego, en las solicitudes de la página, comparé esos valores y obtuve mis datos persistentes sin dejar que el cliente controlara lo que era.
fuente
session_write_close();
cuando la necesite. Rodar su propia identificación única y combinarlas con cookies simples no fue tan difícil, y mantiene todas las páginas agradables y rápidas.Ideas básicas para distinguir entre esos dos.
Sesión:
Galletas:
Se prefiere la sesión cuando necesita almacenar información / valores a corto plazo, como variables para calcular, medir, consultar, etc.
Se prefieren las cookies cuando necesita almacenar información / valores a largo plazo, como la cuenta del usuario (de modo que incluso cuando apagan la computadora durante 2 días, su cuenta seguirá conectada). No puedo pensar en muchos ejemplos de cookies, ya que no se adopta en la mayoría de las situaciones.
fuente
Esta es la principal diferencia en su elección,
Si desea que la identificación se recuerde durante mucho tiempo, debe usar cookies; de lo contrario, si solo desea que el sitio web reconozca al usuario para esta visita solo entonces las sesiones son el camino a seguir.
Las sesiones se almacenan en un archivo que generará su servidor php. Para recordar qué archivo es para qué usuario, php también establecerá una cookie en el navegador del usuario que contiene esta identificación de archivo de sesión, por lo que en su próxima visita php leerá este archivo y volverá a cargar la sesión.
Ahora, por defecto, php borra las sesiones en cada intervalo, y también la convención de nomenclatura de la sesión hace que caduque automáticamente. Además, los navegadores no conservarán la cookie que contiene la identificación de la sesión una vez que se cierra el navegador o se borra el historial.
Es importante tener en cuenta que hoy en día los navegadores también admiten otro tipo de motores de almacenamiento como LocalStorage, SessionStorage y otros motores webdb que el código javascript puede usar para guardar datos en su computadora para recordarlo. Si abre la consola de JavaScript dentro de Facebook, por ejemplo, y escribe "localStorage", verá todas las variables que usa Facebook para recordarlo sin cookies.
fuente
cuando guarda el #ID como la cookie para reconocer a los usuarios registrados, en realidad está mostrando datos a los usuarios que no están relacionados con ellos. Además, si un tercero intenta establecer identificaciones aleatorias como datos de cookies en su navegador, podrá convencer al servidor de que es un usuario mientras que en realidad no lo es. Eso es falta de seguridad.
Ha utilizado cookies y, como ha dicho, ya ha completado la mayor parte del proyecto. Además, la cookie tiene el privilegio de permanecer durante mucho tiempo, mientras que las sesiones finalizan más rápidamente. Por lo tanto, las sesiones no son adecuadas en este caso. En realidad, muchos sitios web y servicios famosos y populares usan cookies y puede permanecer conectado durante mucho tiempo. Pero, ¿cómo puede usar su método para crear un proceso de inicio de sesión más seguro?
esta es la idea: puede ayudar a utilizar las cookies: si usa claves aleatorias en lugar de ID para reconocer a los usuarios registrados, primero, no filtra sus datos primarios a usuarios aleatorios, y segundo, si considera el azar clave lo suficientemente grande, será más difícil para cualquiera adivinar una clave o crear una aleatoria. por ejemplo, puede guardar una clave de 40 longitudes como esta en el navegador del Usuario: "KUYTYRFU7987gJHFJ543JHBJHCF5645UYTUYJH54657jguthfn" y será menos probable que alguien cree la clave exacta y finja ser otra persona.
fuente
Respuesta corta
Reglas ordenadas por prioridad:
Fuente: https://www.lucidar.me/en/web-dev/sessions-or-cookies/
Respuesta detallada
Galletas
Sesiones
La elección adecuada
¡Las sesiones usan una galleta! Los datos de la sesión se almacenan en el lado del servidor, pero un UID se almacena en el lado del cliente en una cookie. Permite que el servidor haga coincidir un usuario determinado con los datos de sesión correctos. UID está protegido y es difícil de hackear, pero no invulnarable. Para acciones delicadas (cambio de correo electrónico o restablecimiento de contraseña), no confíe en las sesiones ni en las cookies: solicite la contraseña del usuario para confirmar la acción.
Los datos confidenciales nunca deben almacenarse en cookies (correos electrónicos, contraseñas cifradas, datos personales ...). Tenga en cuenta que los datos se almacenan en una computadora extranjera, y si la computadora no es privada (en el aula o pública), otra persona puede leer el contenido de las cookies.
Los datos de Remember-me deben almacenarse en cookies; de lo contrario, los datos se perderán cuando el usuario cierre el navegador. Sin embargo, no guarde la contraseña o los datos personales del usuario en la cookie 'recordarme'. Almacene los datos del usuario en la base de datos y vincule estos datos con un par cifrado de ID / clave almacenada en una cookie.
Después de considerar las recomendaciones anteriores, la siguiente pregunta es finalmente lo que le ayuda a elegir entre cookies y sesiones:
¿Deben permanecer los datos persistentes cuando el usuario cierra el navegador?
fuente
En realidad, la sesión y las cookies no siempre son cosas separadas. A menudo, pero no siempre, la sesión usa cookies.
Hay algunas buenas respuestas a su pregunta en estas otras preguntas aquí. Dado que su pregunta se refiere específicamente a guardar la IDU (o ID) del usuario, no creo que sea un duplicado de esas otras preguntas, pero sus respuestas deberían ayudarlo.
cookies vs sesión
¿Caché VS sesión VS cookies?
¿Cuál es la diferencia entre una sesión y una cookie?
fuente
Yo personalmente uso cookies y sesión.
Las cookies solo se usan cuando el usuario hace clic en la casilla "recordarme" . y también las cookies se cifran y los datos solo se descifran en el servidor. Si alguien intenta editar las cookies, nuestro desencriptador puede detectarlo y rechazar la solicitud.
He visto tantos sitios donde la información de inicio de sesión se almacena en cookies , cualquiera puede simplemente cambiar la identificación del usuario y el nombre de usuario en las cookies para acceder a cualquier cuenta.
Gracias,
fuente
Sesión y Cookie no son lo mismo.
Se utiliza una sesión para almacenar la información de las páginas web. Normalmente las páginas web no tienen ningún recuerdo para almacenar esta información. Pero usando podemos guardar la información necesaria.
Pero Cookie está acostumbrado a identificar a los usuarios. Usando cookies podemos almacenar los datos. Es una pequeña parte de los datos que se almacenará en el navegador web del usuario. Por lo tanto, cada vez que el usuario navegue la próxima vez, el navegador devolverá la información de datos de cookies al servidor para obtener las actividades anteriores.
Créditos: sesión y cookie
fuente
Las sesiones le permiten almacenar información individual al igual que con las cookies, pero los datos se almacenan en el servidor en lugar del cliente.
fuente
Como otros dijeron, las sesiones son inteligentes y tienen más ventaja de ocultar la información al cliente.
Pero Cookie aún tiene al menos una ventaja : puede acceder a sus Cookies desde Javascript (por ejemplo, ngCookies ). Con la sesión PHP no puede acceder a ella desde ningún lugar fuera del script PHP.
fuente
Seleccionaré Sesión, en primer lugar, la sesión es más segura que las cookies, las cookies son los datos del sitio del cliente y la sesión son los datos del sitio del servidor. Las cookies se utilizan para identificar a un usuario, ya que son pequeñas piezas de código que están incrustadas en mi servidor con el navegador de la computadora del usuario. Por otro lado, Session lo ayuda a asegurar su identidad porque el servidor web no sabe quién es usted porque la dirección HTTP cambia el estado 192.168.0.1 a 765487cf34ert8ded ... o algo más numera con la ayuda de los métodos GET y POST. La sesión almacena datos del usuario en una sesión de ID única que incluso la ID de usuario no puede coincidir entre sí. La sesión almacena información de un solo usuario en todas las páginas de una aplicación. Las cookies caducan se configuran con la ayuda de setcookies (), mientras que la caducidad de la sesión no se configura, caduca cuando el usuario apaga los navegadores.
fuente
Una sesión es un grupo de información en el servidor que está asociado con la información de la cookie. Si está utilizando PHP, puede verificar la sesión. guardar _ ubicación de ruta y en realidad "ver sesiones". Una cookie es un fragmento de datos enviados y devueltos por los clientes. Las cookies se utilizan a menudo para facilitar las sesiones, ya que le dice al servidor qué cliente manejó cada sesión. Hay otras formas de hacer esto (magia de cadena de consulta, etc.), pero es probable que las cookies sean las más comunes para esto.
fuente