Resumen de las preguntas de la entrevista en línea

  1. Describa brevemente el proceso de conexión TCP (Taoxi)

    Respuesta de referencia:

    El protocolo TCP establece una conexión punto a punto confiable mediante un protocolo de enlace de tres vías, el proceso específico es:

    Primero, el servidor ingresa al estado de escucha y luego se puede procesar la conexión.

    Primer apretón de manos: al establecer una conexión, el cliente envía un paquete de sincronización al servidor y ingresa al estado SYN_SENT, esperando la confirmación del servidor. También se incluye un número de secuencia inicial seq en el paquete enviado. El significado de este apretón de manos es que el cliente quiere establecer una conexión con el servidor.

    Segundo apretón de manos: el servidor recibe el paquete de sincronización y luego responde al cliente con un paquete SYN + ACK. En este momento, el servidor ingresa al estado SYN_RCVD. El significado de este apretón de manos es que el servidor responde al cliente, indicando que ha recibido y aceptado la solicitud de conexión del cliente.

    Tercer apretón de manos: después de recibir el paquete SYN del servidor, el cliente envía un paquete ACK al servidor nuevamente y ingresa al estado ESTAB_LISHED.

    Finalmente, el servidor recibe el paquete ACK del cliente y entra en el estado ESTAB_LISHED, en este punto se establece la conexión.

  2. Presentamos el ataque de intermediario HTTPS

    Respuesta de referencia:

    Hay dos tipos principales de ataques HTTPS: ataques de secuestro de SSL y ataques de eliminación de SSL.

    Un ataque de secuestro de SSL significa que un atacante secuestra la conexión entre el cliente y el servidor, reemplaza el certificado legítimo del servidor con un certificado falsificado y, de ese modo, obtiene la información transmitida entre el cliente y el servidor. Este método generalmente es fácil de descubrir para los usuarios y el navegador mostrará claramente un error de certificado, sin embargo, algunos usuarios no tienen una gran conciencia de seguridad y pueden hacer clic para continuar navegando para lograr el propósito del ataque.

    El ataque de eliminación de SSL significa que el atacante secuestra la conexión entre el cliente y el servidor. El atacante mantiene la conexión HTTPS entre él y el servidor, pero envía una conexión HTTP normal al cliente. Dado que la conexión HTTP se transmite en texto claro, Puede obtener todos los datos en texto claro transmitidos por el cliente.

  3. ¿Presentar la diferencia entre http1.0, http1.1y http2.0protocolos?

    Respuesta de referencia:

    Hablemos primero de http1.0

    Su característica es que la conexión TCP se destruirá después de que se complete cada solicitud y respuesta, y se estipula que la siguiente solicitud solo se puede enviar después de que se complete la respuesta anterior. Hay dos problemas con esto:

    1. No se puede reutilizar la conexión

      Cada solicitud requiere una nueva conexión TCP, lo que completa tres apretones de manos y cuatro ondas, lo que resulta en una baja utilización de la red.

    2. bloqueo de cabecera de línea

      Si la solicitud anterior se bloquea por algún motivo, no se enviarán las solicitudes posteriores.

    Luego está http1.1

    http1.1 es una versión mejorada de http1.0, que realiza las siguientes mejoras:

    1. Conexión larga

      http1.1 permite agregar encabezados de solicitud al realizar la solicitud connection:keep-alive, lo que permite que las solicitudes posteriores de los clientes reutilicen la conexión TCP anterior dentro de un período de tiempo.

    2. Tubería

      Según conexiones largas, las canalizaciones pueden continuar enviando solicitudes posteriores sin esperar la respuesta de la primera solicitud, pero el orden de las respuestas aún se devuelve en el orden de las solicitudes.

    3. Almacenamiento en caché

      Se agregó un nuevo control de caché del encabezado de respuesta para implementar el almacenamiento en caché del cliente.

    4. Transmisión de punto de interrupción

      Al cargar/descargar recursos, si el recurso es demasiado grande, divídalo en varias partes y cárguelas/descárguelas por separado. Si encuentra una falla en la red, puede continuar la solicitud desde el lugar donde ya lo cargó/descargó. de empezar desde cero, lo que mejora la eficiencia.

    Finalmente, http2.0

    http2.0 optimiza aún más la eficiencia de la transmisión y tiene principalmente las siguientes mejoras:

    1. encuadre binario

      Divida el mensaje transmitido en tramas binarias más pequeñas. Cada trama tiene su propio número de secuencia de identificación. Incluso si se interrumpe aleatoriamente, se puede ensamblar correctamente en el otro extremo.

    2. Multiplexación

      Según el marco binario, todos los accesos bajo el mismo nombre de dominio provienen de la misma conexión TCP, y ya no existe el problema del bloqueo del encabezado de línea y no es necesario cumplir con el orden de respuesta.

    3. Compresión de la cabeza

      http2.0 reemplaza la información común en el encabezado con menos caracteres en forma de diccionario, lo que reduce en gran medida la cantidad de datos en el encabezado y logra así un menor volumen de transmisión.

    4. empuje del servidor

      http2.0 permite que el servidor envíe mensajes directamente al cliente sin una solicitud explícita del cliente

  4. Por qué HTTP1.1 no puede lograr la multiplexación (Tencent)

    Respuesta de referencia:

    HTTP/1.1 no transfiere archivos binarios, sino mediante texto. Dado que no existe el concepto de flujo, cuando se utiliza la transmisión paralela (multiplexación) para transmitir datos, el extremo receptor no puede distinguir las solicitudes correspondientes a múltiples respuestas después de recibir la respuesta, por lo que no puede volver a ensamblar los resultados de múltiples respuestas. logrado.

  5. Explique brevemente la multiplexación de http2 (NetEase)

    Respuesta de referencia:

    En HTTP/2, hay dos conceptos muy importantes: marco y flujo. El cuadro representa la unidad más pequeña de datos. Cada cuadro identifica a qué flujo pertenece el cuadro. Un flujo es un flujo de datos compuesto de múltiples cuadros. Multiplexación significa que pueden existir múltiples flujos en una conexión TCP. En otras palabras, se pueden enviar múltiples solicitudes y el par puede saber a qué solicitud pertenece a través del identificador en el marco. A través de esta tecnología, se puede evitar el problema de bloqueo del encabezado de línea en la versión anterior de HTTP y se puede mejorar enormemente el rendimiento de la transmisión.

  6. Hable sobre su comprensión del protocolo de enlace de tres vías y de la onda de cuatro vías de TCP

    El protocolo TCP establece una conexión punto a punto confiable mediante un protocolo de enlace de tres vías, el proceso específico es:

    Primero, el servidor ingresa al estado de escucha y luego se puede procesar la conexión.

    Primer apretón de manos: al establecer una conexión, el cliente envía un paquete de sincronización al servidor y ingresa al estado SYN_SENT, esperando la confirmación del servidor. También se incluye un número de secuencia inicial seq en el paquete enviado. El significado de este apretón de manos es que el cliente quiere establecer una conexión con el servidor.

    Segundo apretón de manos: el servidor recibe el paquete de sincronización y luego responde al cliente con un paquete SYN + ACK. En este momento, el servidor ingresa al estado SYN_RCVD. El significado de este apretón de manos es que el servidor responde al cliente, indicando que ha recibido y aceptado la solicitud de conexión del cliente.

    Tercer apretón de manos: después de recibir el paquete SYN del servidor, el cliente envía un paquete ACK al servidor nuevamente y ingresa al estado ESTAB_LISHED.

    Finalmente, el servidor recibe el paquete ACK del cliente y entra en el estado ESTAB_LISHED, en este punto se establece la conexión.

    Cuando es necesario cerrar la conexión, se necesitan cuatro ondas para cerrarla

    1. El Cliente envía un paquete FIN al Servidor, lo que indica que el Cliente desea activamente cerrar la conexión y luego ingresa al estado FIN_WAIT_1, esperando que el Servidor devuelva un paquete ACK. Después de eso, el Cliente ya no puede enviar datos al Servidor, pero puede leerlos.
    2. Después de recibir el paquete FIN, el servidor envía un paquete ACK al cliente y luego ingresa al estado CLOSE_WAIT. Después de eso, el servidor ya no puede leer datos, pero puede continuar enviando datos al cliente.
    3. Después de recibir el paquete ACK devuelto por el servidor, el cliente ingresa al estado FIN_WAIT_2 y espera a que el servidor envíe el paquete FIN.
    4. Una vez que el servidor completa el envío de datos, envía el paquete FIN al cliente, luego ingresa al estado LAST_ACK y espera a que el cliente devuelva el paquete ACK. Después de eso, el servidor no puede leer ni enviar datos.
    5. Después de recibir el paquete FIN, el Cliente envía un paquete ACK al Servidor, luego ingresa al estado TIME_WAIT, luego espera lo suficiente (2MSL) para asegurarse de que el Servidor reciba el paquete ACK y finalmente regresa al estado CERRADO para liberar recursos de la red. .
    6. Después de recibir el paquete ACK devuelto por el Cliente, el Servidor vuelve al estado CERRADO y libera recursos de la red.
  7. Presentamos el proceso de protocolo de enlace HTTPS

    Respuesta de referencia:

    1. El cliente solicita al servidor y le dice al servidor el algoritmo de cifrado que admite y la longitud de la clave y otra información.
    2. El servidor responde con clave pública y certificado de servidor.
    3. El cliente verifica si el certificado es legítimo, luego genera una clave de sesión, cifra la clave con la clave pública del servidor y envía el resultado del cifrado al servidor a través de la solicitud.
    4. El servidor usa la clave privada para descifrar la clave de sesión cifrada y la guarda, luego usa la clave de sesión para cifrar el mensaje y responde al cliente, indicando que está listo.
    5. El cliente utiliza la clave de sesión para descifrar el mensaje y sabe que el servidor está listo.
    6. La entrega posterior de mensajes al cliente y al servidor utiliza la clave de sesión para cifrar la información.
  8. ¿Cómo verifica el cliente la validez del certificado durante el protocolo de enlace HTTPS?

    Respuesta de referencia:

    1. Compruebe si el cliente confía en la autoridad emisora ​​del certificado de verificación.
    2. Verifique si el certificado ha sido revocado mediante CRL u OCSP.
    3. Compare la hora del sistema para ver si el certificado de calibración está dentro del período de validez.
    4. Al verificar si la otra parte tiene la clave privada del certificado, se puede juzgar si el nombre de dominio del sitio web del certificado es coherente con el nombre de dominio de la emisión del certificado.
  9. ¿Cuáles son los escenarios de aplicación de los códigos de estado HTTP 301 y 302?

    Respuesta de referencia:

    301 significa redirección permanente, 302 significa redirección temporal.

    Si el navegador recibe un 301, almacenará en caché la dirección redirigida y no volverá a solicitar al servidor. Utilizará directamente la dirección almacenada en caché para realizar la solicitud, lo que puede reducir la cantidad de solicitudes.

    Pero si el navegador recibe un 302, la dirección de redireccionamiento no se almacenará en caché y el navegador seguirá solicitando la dirección original en el futuro.

    Por lo tanto, 301 es adecuado para escenarios de transferencia de dirección permanente, como cambios de nombre de dominio, mientras que 302 es adecuado para escenarios de transferencia temporal, como que la página de inicio salte temporalmente a la página del evento.

  10. Tanto las cookies como los tokens se almacenan en el encabezado, ¿por qué no se puede secuestrar el token?

    Respuesta de referencia:

    Dado que el navegador envía cookies automáticamente al servidor, los atacantes pueden utilizar esta función para realizar ataques CSRF.

    Por lo general, el token no se coloca en la cookie. El navegador necesita usar JS para guardarlo en el almacenamiento local por sí mismo. También debe agregarse manualmente al encabezado de la solicitud al realizar una solicitud, por lo que no es fácil provocar ataques CSRF.

  11. Introduzca cómo implementar el cifrado de tokens

    Respuesta de referencia:

    Tome el formato de token más común, jwt, como ejemplo.

    El token se divide en tres secciones: encabezado, carga útil y firma.

    Entre ellos, el encabezado identifica el algoritmo de firma y el tipo de token; la carga útil identifica la información del sujeto, incluido el tiempo de vencimiento del token, el tiempo de liberación, el emisor, el contenido del tema, etc.; la firma es el resultado del cifrado obtenido al cifrar las dos primeras partes utilizando un algoritmo específico.

    El token es a prueba de manipulaciones: si un atacante cambia las dos primeras partes, no se corresponderá con la tercera parte, lo que invalidará el token. El atacante desconoce la clave de cifrado, por lo que no puede modificar el valor de la tercera parte.

    Por lo tanto, siempre que no se filtre la clave secreta, un token verificado es digno de confianza.

  12. Hablar sobre inicio de sesión único (New Oriental)

    Respuesta de referencia:

    SSO generalmente requiere un centro de autenticación independiente (pasaporte). Todos los inicios de sesión del subsistema deben pasar por el pasaporte. El subsistema en sí no participará en la operación de inicio de sesión. Cuando un sistema inicia sesión exitosamente, el pasaporte emitirá un token a cada subsistema. Los subsistemas pueden mantener tokens para obtener sus propios recursos protegidos. Para reducir la autenticación frecuente, cada subsistema establecerá una sesión parcial después de ser autorizado por el pasaporte. Dentro de un cierto período de tiempo, no es necesario iniciar la autenticación en el pasaporte nuevamente.

    El proceso específico es:

    1. El usuario accede a los recursos protegidos del Sistema 1. El Sistema 1 descubre que el usuario no ha iniciado sesión, salta al centro de autenticación SSO y utiliza su propia dirección como parámetro.
    2. El centro de autenticación sso encontró que el usuario no había iniciado sesión y lo dirigió a la página de inicio de sesión.
    3. El usuario ingresa el nombre de usuario y la contraseña para enviar la solicitud de inicio de sesión
    4. El centro de autenticación de SSO verifica la información del usuario, crea una sesión entre el usuario y el centro de autenticación de SSO, denominada sesión global, y crea un token de autorización.
    5. El centro de autenticación sso saltará a la dirección de solicitud original con el token (sistema 1)
    6. El sistema 1 obtiene el token y va al centro de certificación SSO para verificar si el token es válido.
    7. token de verificación del centro de autenticación sso, devolución válida, sistema de registro 1
    8. El sistema 1 usa el token para crear una sesión con el usuario, llamada sesión parcial, y devuelve el recurso protegido.
    9. El usuario accede a recursos protegidos en el Sistema 2
    10. El sistema 2 descubre que el usuario no ha iniciado sesión, salta al centro de autenticación SSO y usa su propia dirección como parámetro
    11. El centro de autenticación sso descubre que el usuario ha iniciado sesión, regresa a la dirección del sistema 2 y adjunta el token.
    12. El sistema 2 obtiene el token y va al centro de certificación SSO para verificar si el token es válido.
    13. token de verificación del centro de certificación sso, devolución válida, sistema de registro 2
    14. El sistema 2 usa el token para crear una sesión parcial con el usuario, devolviendo el recurso protegido
  13. ¿Cómo reutiliza http1.1 las conexiones tcp? (NetEase)

    Respuesta de referencia:

    Cuando el cliente solicita al servidor, le dice al servidor que el protocolo utilizado es http1.1 a través de la línea de solicitud y al mismo tiempo lo incluye en el encabezado de la solicitud connection:keep-alive(para mantener la compatibilidad), diciéndole al servidor que este es un largo conexión, y las solicitudes posteriores pueden reutilizar esta conexión TCP.

    La ventaja de esto es que reduce la cantidad de apretones de manos de tres vías y ondas de cuatro vías, lo que mejora la utilización de la red hasta cierto punto. Sin embargo, dado que http1.1 no admite multiplexación, la secuencia de respuesta debe llegar al cliente en el orden de las solicitudes y la transmisión paralela no se puede realizar realmente, por lo que antes de la aparición de http2.0, los recursos estáticos, como las imágenes, En proyectos reales, a menudo se distribuyen a diferentes servidores Servidor de recursos bajo el nombre de dominio para lograr una verdadera transmisión paralela.

  14. Cómo reanudar la carga de archivos después del punto de interrupción (NetEase)

    Respuesta de referencia:

    El cliente fragmenta el contenido binario del archivo, y cada dato se identifica con un número de serie en orden, al cargar cada dato también se adjunta su número de serie. Cuando el servidor recibe cada dato, lo guarda en un archivo temporal y registra el hash y el número de secuencia de cada archivo.

    Si la carga se interrumpe, cuando vuelva a cargar en el futuro, puede solicitarle al servidor el número de serie de los fragmentos cargados, y el cliente solo necesita cargar los fragmentos restantes.

    Cuando se cargan todos los fragmentos, el servidor ensambla el archivo completo en el orden de los fragmentos y elimina los archivos fragmentados.

  15. Presentamos SSL y TLS (Secoo)

    Respuesta de referencia:

    Todos son protocolos utilizados para garantizar la seguridad de la transmisión, entre la capa de transporte y la capa de aplicación. TLS es una versión mejorada de SSL.

    Sus procesos básicos son los mismos:

    1. El cliente solicita al servidor la clave pública y utiliza un certificado digital para verificar la clave pública.
    2. El cliente utiliza la clave pública para cifrar la clave de sesión y el servidor utiliza la clave privada para descifrar la clave de sesión, obteniendo así una clave de sesión reconocida por ambas partes.
    3. Los datos transmitidos se cifran utilizando la clave de sesión y luego se transmiten. La parte receptora utiliza la clave de sesión para descifrar y obtener los datos originales.
  16. Hable sobre el modelo de red de cinco capas (Secoo)

    Respuesta de referencia:

    De arriba a abajo son: capa de aplicación, capa de transporte, capa de red, capa de enlace de datos y capa física. Al enviar un mensaje, el mensaje se empaqueta de arriba a abajo y cada capa agrega paquetes en función de la capa anterior. Al recibir el mensaje, el mensaje se descomprime de abajo hacia arriba y finalmente se obtiene la información original.

    en:

    La capa de aplicación está orientada principalmente a escenarios de aplicaciones en Internet, como páginas web, correos electrónicos, centros de archivos, etc. Sus protocolos representativos incluyen http, smtp, pop3, ftp, DNS, etc.

    La capa de transporte está orientada principalmente al proceso de transmisión, por ejemplo, el protocolo TCP es para garantizar una transmisión confiable, mientras que el protocolo UDP es una transmisión sin conexión y proporcionan diferentes métodos de transmisión.

    La capa de red resuelve principalmente el problema de cómo localizar objetivos, como IP, ICMP, ARP, etc.

    La función de la capa de enlace de datos es transmitir datos de manera confiable al objetivo, como los protocolos Ethernet comunes y los protocolos P2P.

    La capa física sirve para regular los dispositivos físicos utilizados en ambos extremos de la red, como Bluetooth, wifi, fibra óptica, conectores de cables de red, etc.

  17. La diferencia entre GET y POST (Liulishuo)

    Respuesta de referencia:

    Desde la perspectiva del protocolo http, GET y POST son solo las primeras palabras en la línea de solicitud. Aparte de la diferente semántica, en realidad no existe una diferencia esencial.

    La razón por la que ocurren varias diferencias en el desarrollo real se debe principalmente al comportamiento predeterminado del navegador.

    Afectados por el navegador, en el desarrollo real, GET y POST tienen las siguientes diferencias:

    1. Cuando el navegador envía una solicitud GET, no incluye el cuerpo de la solicitud.
    2. La cantidad de información transmitida por la solicitud GET es limitada y adecuada para transmitir una pequeña cantidad de datos; la cantidad de información transmitida por la solicitud POST es ilimitada y adecuada para transmitir una gran cantidad de datos.
    3. Las solicitudes GET solo pueden transmitir datos ASCII y los datos que no son ASCII deben codificarse; las solicitudes POST no tienen restricciones.
    4. La mayoría de los datos pasados ​​por las solicitudes GET se adjuntan al parámetro de ruta. La página se puede reproducir completamente compartiendo la dirección, pero también expone los datos. Si hay datos confidenciales para pasar, las solicitudes GET no deben usarse, al menos Al menos no deben colocarse en el camino.
    5. Al actualizar la página, si la página actual se obtiene mediante una solicitud POST, el navegador le preguntará al usuario si desea volver a enviarla. Si la página se obtiene mediante una solicitud GET, no aparecerá ningún mensaje.
    6. La dirección solicitada por GET se puede guardar como favorito del navegador, pero no por POST.
  18. ¿Qué es el secuestro de http?

    Respuesta de referencia:

    Significa que el atacante establece un canal de conexión entre el cliente y el servidor al mismo tiempo. De alguna manera, la solicitud del cliente se envía a su propio servidor y luego tiene la capacidad de controlar el contenido de la respuesta, mostrándole así al cliente el mensaje equivocado información.

  19. Secuestro de HTTP, secuestro de DNS y XSS

    Respuesta de referencia:

    El secuestro de http significa que el atacante establece un canal de conexión entre el cliente y el servidor al mismo tiempo. De alguna manera, la solicitud del cliente se envía a su propio servidor y luego tiene la capacidad de controlar el contenido de la respuesta, mostrándolo así. al cliente Información incorrecta, como agregar algún contenido publicitario a la página.

    El secuestro de DNS significa que un atacante secuestra un servidor DNS y obtiene la autoridad para modificar los registros de resolución de DNS, lo que hace que el nombre de dominio solicitado por el cliente se resuelva en la dirección IP incorrecta. De esta manera, el atacante roba información del usuario o destruye la información normal original. servicios. .

    XSS se refiere a ataques de secuencias de comandos entre sitios. El atacante aprovecha las vulnerabilidades del sitio y agrega algunos scripts maliciosos al contenido del formulario cuando se envía el formulario. Cuando otros usuarios normales navegan por la página y el script malicioso del atacante aparece en la página, el script se ejecuta, provocando que la página ser destruido o se roba la información del usuario.

    Para evitar ataques XSS, debe filtrar el código de secuencia de comandos en el lado del servidor, eliminar algunos elementos y atributos peligrosos o codificar entidades HTML en elementos.

  20. Introducción al ataque xss csrf

    Respuesta de referencia:

    XSS:

    XSS se refiere a ataques de secuencias de comandos entre sitios. El atacante aprovecha las vulnerabilidades del sitio y agrega algunos scripts maliciosos al contenido del formulario cuando se envía el formulario. Cuando otros usuarios normales navegan por la página y el script malicioso del atacante aparece en la página, el script se ejecuta, provocando que la página ser destruido o se roba la información del usuario.

    Para evitar ataques XSS, debe filtrar el código de secuencia de comandos en el lado del servidor, eliminar algunos elementos y atributos peligrosos o codificar entidades HTML en elementos.

    CSRF:

    CSRF es una falsificación de solicitudes entre sitios, un método de ataque que obliga a los usuarios a realizar operaciones no intencionales en la aplicación web actualmente conectada.

    Primero guía al usuario a visitar un sitio web peligroso. Cuando el usuario visita el sitio web, el sitio web enviará una solicitud al sitio atacado. Esta solicitud se enviará con la cookie del usuario, por lo que la información de identidad del usuario se utiliza para completar el ataque. .

    Hay muchas formas de defenderse de los ataques CSRF:

    1. No utilices cookies
    2. Agregar verificación del token de verificación al formulario
    3. Utilice el campo SameSite en las cookies
    4. El servidor verifica el campo de referencia.
  21. La autenticación https es el proceso de autenticación TSL/SSL

    Respuesta de referencia:

    1. El cliente solicita al servidor y le dice al servidor el algoritmo de cifrado que admite y la longitud de la clave y otra información.
    2. El servidor responde con clave pública y certificado de servidor.
    3. El cliente verifica si el certificado es legítimo, luego genera una clave de sesión, cifra la clave con la clave pública del servidor y envía el resultado del cifrado al servidor a través de la solicitud.
    4. El servidor usa la clave privada para descifrar la clave de sesión cifrada y la guarda, luego usa la clave de sesión para cifrar el mensaje y responde al cliente, indicando que está listo.
    5. El cliente utiliza la clave de sesión para descifrar el mensaje y sabe que el servidor está listo.
    6. La entrega posterior de mensajes al cliente y al servidor utiliza la clave de sesión para cifrar la información.
  22. ¿Por qué se requiere que una autoridad CA firme el certificado?

    Respuesta de referencia:

    Principalmente para resolver el problema de la confiabilidad de los certificados. Sin una autoridad que firme el certificado, el cliente no tiene forma de saber si el certificado está falsificado, lo que aumenta el riesgo de ataques de intermediario y hace que https carezca de significado.

  23. El proceso de autenticación involucrará los conceptos de claves, cifrado simétrico, cifrado asimétrico y resúmenes. Por favor explique.

    Respuesta de referencia:

    llave

    Una clave es un parámetro que se ingresa en un algoritmo que convierte texto sin formato en texto cifrado o texto cifrado en texto sin formato. Las claves se dividen en claves simétricas y claves asimétricas, que se utilizan en cifrado simétrico y cifrado asimétrico, respectivamente.

    Cifrado simétrico

    El cifrado simétrico también se denomina cifrado de clave privada, lo que significa que el remitente y el receptor de información utilizan la misma clave para cifrar y descifrar datos. El cifrado simétrico se caracteriza por un algoritmo abierto, una velocidad rápida de cifrado y descifrado y es adecuado para cifrar grandes cantidades de datos. Los algoritmos de cifrado simétrico comunes incluyen DES, 3DES, TDEA, Blowfish, RC5 e IDEA.

    cifrado asimétrico

    El cifrado asimétrico también se denomina cifrado de clave pública. El cifrado asimétrico ofrece mayor seguridad que el cifrado simétrico. La comunicación cifrada simétricamente utiliza la misma clave entre ambas partes. Si se filtra la clave de una de las partes, se descifrará toda la comunicación. El cifrado asimétrico utiliza un par de claves, a saber, una clave pública y una clave privada, y aparecen en pares. La clave privada se guarda sola y no se puede revelar al mundo exterior. Una clave pública se refiere a una clave pública que cualquiera puede obtener. Cifre con la clave pública o privada y descifre con la otra.

    Resumen

    El algoritmo de resumen también se denomina algoritmo hash/hash. Convierte datos de cualquier longitud en una cadena de datos de longitud fija (generalmente representada por una cadena hexadecimal) a través de una función. El algoritmo es irreversible.

  24. ¿Qué es el protocolo webSocket?¿Puedes describirlo brevemente?

    Respuesta de referencia:

    El protocolo websocket es un nuevo protocolo introducido por HTML5. En comparación con http, es un protocolo de conexión persistente. Utiliza el protocolo http para completar el protocolo de enlace y luego envía mensajes a través del canal de conexión TCP. Usando el protocolo websocket, el servidor puede enviar mensajes activamente.

    En primer lugar, si el cliente desea iniciar una conexión websocket, primero debe enviar una solicitud http al servidor para completar el protocolo de enlace. La ruta en la línea de solicitud debe usar la dirección inicial y se deben agregar etiquetas a la solicitud ws:. encabezado upgrade、connection、Sec-WebSocket-Key、Sec-WebSocket-Version.

    Luego, después de que el servidor recibe la solicitud, descubre que es una solicitud de protocolo de enlace del protocolo websocket, por lo que la línea de respuesta la contiene Switching Protocolsy el encabezado de respuesta contiene upgrade、connection、Sec-WebSocket-Acceptla etiqueta.

    Una vez que el cliente recibe la respuesta, se completa el protocolo de enlace y los mensajes se envían y reciben directamente utilizando la conexión TCP establecida.

  25. ¿Cuáles son las ventajas de webSocket sobre http tradicional?

    Respuesta de referencia:

    Cuando necesitamos observar cambios en los datos en tiempo real de una página (como chat, gráfico de líneas K), solíamos utilizar dos métodos en el pasado.

    El primero es el sondeo corto, es decir, el cliente envía mensajes al servidor de vez en cuando para preguntar si hay datos nuevos.

    El segundo tipo es el sondeo largo, que inicia una solicitud al servidor, que puede suspender la solicitud y esperar hasta que haya un nuevo mensaje antes de responder. Después de responder, el cliente inicia inmediatamente otra solicitud y repite todo el proceso.

    De cualquier manera, expone la debilidad del protocolo http, es decir, la respuesta debe ocurrir después de la solicitud y el servidor es pasivo y no puede enviar mensajes activamente. Y permitir que el cliente inicie solicitudes continuamente consume recursos en vano.

    La aparición de websocket es para resolver este problema. Después de usar el protocolo http para completar el protocolo de enlace, puede establecer una conexión persistente con el servidor. El servidor puede enviar mensajes activamente al cliente cuando sea necesario, lo que consume la menor cantidad de recursos y es en tiempo real También el más alto.

  26. Cómo secuestrar solicitudes https y proporcionar ideas

    Respuesta de referencia:

    https es a prueba de manipulaciones. Siempre que el proceso de verificación del certificado del navegador sea correcto, es difícil atacar sin que el usuario se dé cuenta. Sin embargo, si se puede cambiar el proceso de verificación del certificado del navegador, existe la posibilidad de implementar un ataque de intermediario https.

    Por lo tanto, para secuestrar https, primero debe falsificar un certificado y encontrar una manera de hacer que los usuarios confíen en este certificado. Hay muchas formas, como virus, malware, inducción, etc. Una vez que se confía en el certificado, se puede atacar utilizando un certificado falsificado mediante un ataque de intermediario común.

  27. ¿Cómo resolver problemas entre dominios?

    Respuesta de referencia:

    1. Usando JSONP

      Esta es una forma antigua de resolver problemas entre dominios.

      Cuando se requiere una solicitud entre dominios, prepare una función que procese los datos del servidor con anticipación, luego genere un <script>elemento srcque apunte al sitio entre dominios y pase el nombre de la función preparada al servidor a través del parámetro de dirección.

      El sitio entre dominios devuelve un script que llama a esta función. Cuando el cliente recibe el script, ejecutará la función preparada previamente para lograr la adquisición de datos entre dominios.

      JSONP es simple de implementar y tiene buena compatibilidad, pero sus deficiencias también son obvias: solo admite solicitudes de obtención, tiene problemas de seguridad y es relativamente intrusivo para el código del lado del servidor.

    2. usar cors

      Al realizar una solicitud, el cliente utiliza algunos encabezados de solicitud especiales para solicitar acceso entre dominios al servidor y le informa al servidor su propio comportamiento a través de estos encabezados de solicitud. El servidor decide si permite solicitudes entre dominios de acuerdo con sus propias reglas y, si está permitido, le dice al cliente a través del encabezado de respuesta que puede enviar solicitudes entre dominios.

      El protocolo cors ha sido compatible con varios navegadores convencionales, es altamente seguro y no invade el código del servidor, y actualmente es el método entre dominios más común.

    Además, el procesamiento entre dominios en la antigüedad también incluía iframe, formulario, etc. Debido a que sus fallas son muy obvias, rara vez se usan.

  28. ¿Cómo implementar la mensajería instantánea en el front-end?

    Respuesta de referencia:

    1. Sondeos breves. Es decir, el cliente envía mensajes al servidor cada cierto tiempo para preguntar si hay datos nuevos.
    2. El sondeo largo inicia una solicitud al servidor, que puede suspender la solicitud y esperar hasta que haya nueva información antes de responder. Después de responder, el cliente inicia inmediatamente otra solicitud y repite todo el proceso.
    3. websocket, una vez completado el protocolo de enlace, se establecerá un canal de conexión persistente y luego el servidor podrá enviar nuevos mensajes al cliente en cualquier momento
  29. Códigos de estado HTTP comunes 301 302 304 403

    Respuesta de referencia:

    301 redirección permanente, el navegador almacenará en caché la dirección redirigida y, cuando el usuario vuelva a visitar la dirección original en el futuro, lo guiará directamente para que visite la nueva dirección.

    302 redirección temporal, el navegador guiará al usuario a la nueva dirección, pero no almacenará en caché la dirección original. La próxima vez que el usuario acceda a la dirección de origen, el navegador aún tendrá que solicitar el servidor de la dirección original.

    304 El recurso no ha sido modificado. El servidor usa este código de estado para decirle al cliente que el recurso solicitado es el mismo que en el pasado y no ha cambiado. Se recomienda usar el caché anterior. Normalmente, el servidor no incluye ningún cuerpo de respuesta en respuesta a un código de estado 304.

    403 Acceso no permitido. El servidor le dice al cliente a través de este código de estado que el acceso a este recurso actualmente no está permitido. Este código de estado suele aparecer cuando los permisos son insuficientes.

  30. ¿Qué sucede después de ingresar una dirección en la barra de direcciones del navegador y presionar la tecla Enter?

    1. Respuesta de referencia:

      1. El navegador completa automáticamente el protocolo y el puerto
      2. El navegador completa automáticamente la codificación de URL.
      3. El navegador busca en el caché local de acuerdo con la dirección URL y verifica si el caché se accede de acuerdo con las reglas del caché. Si se accede al caché, el caché se usa directamente y no se realiza ninguna solicitud nuevamente.
      4. Encuentre la dirección IP del servidor a través de la resolución DNS
      5. El navegador envía una solicitud al servidor para establecer una conexión TCP y, después de completar el protocolo de enlace de tres vías, se establece el canal de conexión.
      6. Si se utiliza el protocolo HTTPS, también se realizará un protocolo de enlace SSL para establecer un canal cifrado. Cuando se utiliza un protocolo de enlace SSL, se determina si se utiliza HTTP2
      7. El navegador decide qué cookies incluir en los encabezados de solicitud.
      8. El navegador configura automáticamente el encabezado de la solicitud, la versión del protocolo y la cookie, y emite una solicitud GET.
      9. El servidor procesa la solicitud e ingresa al proceso de procesamiento de back-end. Después de completar el procesamiento, el servidor responde con un mensaje HTTP al navegador.
      10. El navegador decide si conserva la conexión TCP según la versión del protocolo utilizada y la convención del campo Conexión.
      11. El navegador determina cómo manejar esta respuesta según el código de estado de la respuesta.
      12. El navegador identifica el tipo de respuesta según el campo Tipo de contenido en el encabezado de la respuesta. Si es texto/html, realiza un análisis HTML del contenido del cuerpo de la respuesta; de lo contrario, realiza otro procesamiento.
      13. El navegador completa la configuración de caché y cookies en función de otro contenido en el encabezado de respuesta.
      14. El navegador comienza a analizar el HTML de arriba a abajo y, si encuentra un enlace de recurso externo, solicita el recurso.
      15. Durante el proceso de análisis, se generan un árbol DOM y un árbol CSSOM, y luego se fusionan en un árbol de renderizado (árbol de renderizado) durante la generación, luego se calcula la posición y el tamaño (reflujo) de cada nodo en el árbol de renderizado y finalmente se usa cada uno. La GPU del nodo se dibuja en la pantalla (repinta)
      16. También se activará una serie de eventos durante el proceso de análisis. Cuando se complete el árbol DOM, se activará el evento DOMContentLoaded. Cuando se carguen todos los recursos, se activará el evento de carga.
  31. apretón de manos HTTPS

    Respuesta de referencia:

    1. El cliente solicita al servidor y le dice al servidor el algoritmo de cifrado que admite y la longitud de la clave y otra información.
    2. El servidor responde con clave pública y certificado de servidor.
    3. El cliente verifica si el certificado es legítimo, luego genera una clave de sesión, cifra la clave con la clave pública del servidor y envía el resultado del cifrado al servidor a través de la solicitud.
    4. El servidor usa la clave privada para descifrar la clave de sesión cifrada y la guarda, luego usa la clave de sesión para cifrar el mensaje y responde al cliente, indicando que está listo.
    5. El cliente utiliza la clave de sesión para descifrar el mensaje y sabe que el servidor está listo.
    6. La entrega posterior de mensajes al cliente y al servidor utiliza la clave de sesión para cifrar la información.
  32. ¿Para qué se utiliza el código de verificación de una página web?, ¿para qué problemas de seguridad se utiliza?

    Respuesta de referencia:

    El código de verificación se utiliza principalmente para permitir que el servidor distinga si la solicitud es enviada por un humano o una máquina. Esto se hace para evitar que algunos programas envíen maliciosamente una gran cantidad de información al servidor, lo que a su vez hace que el servidor genere una gran cantidad de datos basura. A veces, los códigos de verificación también pueden evitar que las máquinas descifren las contraseñas de los usuarios por fuerza bruta al enviar continuamente información de inicio de sesión en un corto período de tiempo y probar varias combinaciones de contraseñas para lograr el propósito de descifrar.

  33. La diferencia entre http1.0, http2.0, http3.0

    Respuesta de referencia:

    http1.0

    La conexión TCP se destruirá después de cada solicitud y respuesta, y la siguiente solicitud solo se podrá enviar después de que se complete la respuesta anterior. Hay dos problemas con esto:

    1. No se puede reutilizar la conexión

      Cada solicitud requiere una nueva conexión TCP, lo que completa tres apretones de manos y cuatro ondas, lo que resulta en una baja utilización de la red.

    2. bloqueo de cabecera de línea

      Si la solicitud anterior se bloquea por algún motivo, no se enviarán las solicitudes posteriores.

    http2.0

    http2.0 optimiza la eficiencia de la transmisión y tiene principalmente las siguientes mejoras:

    1. encuadre binario

      Divida el mensaje transmitido en tramas binarias más pequeñas. Cada trama tiene su propio número de secuencia de identificación. Incluso si se interrumpe aleatoriamente, se puede ensamblar correctamente en el otro extremo.

    2. Multiplexación

      Según el marco binario, todos los accesos bajo el mismo nombre de dominio provienen de la misma conexión TCP, y ya no existe el problema del bloqueo del encabezado de línea y no es necesario cumplir con el orden de respuesta.

    3. Compresión de la cabeza

      http2.0 reemplaza la información común en el encabezado con menos caracteres en forma de diccionario, lo que reduce en gran medida la cantidad de datos en el encabezado y logra así un menor volumen de transmisión.

    4. empuje del servidor

      http2.0 permite que el servidor envíe mensajes directamente al cliente sin una solicitud explícita del cliente

    http3.0

    http3.0 aún se encuentra en la etapa de borrador: abandona por completo el protocolo TCP y cambia al protocolo UDP para mejorar aún más el rendimiento.

    Aunque http2.0 ha realizado muchas optimizaciones, no puede eliminar los problemas del protocolo TCP en sí, como el tiempo prolongado para establecer una conexión, problemas de bloqueo de pares, etc.

    Para garantizar la confiabilidad de la transmisión, http3.0 utiliza el protocolo QUIC.

  34. La diferencia entre cookie/sessionStorage/localStorage

    Respuesta de referencia:

    Las cookies, el almacenamiento de sesión y el almacenamiento local son formas de guardar datos locales.

    Entre ellas, las cookies tienen buena compatibilidad y son compatibles con todos los navegadores. El navegador tendrá algunos comportamientos predeterminados para las cookies. Por ejemplo, cuando set-cookieaparece un campo en el encabezado de respuesta, el navegador guardará automáticamente el valor de la cookie; por otro ejemplo, cuando el navegador envía una solicitud, adjuntará la cookie correspondiente al encabezado de solicitud. Estos comportamientos predeterminados hacen que las cookies sean responsables de mantener el estado de inicio de sesión durante mucho tiempo. Al mismo tiempo, es precisamente debido al comportamiento predeterminado del navegador que los atacantes maliciosos pueden aprovecharlo. Los ataques CSRF son un método de ataque típico que utiliza cookies. Aunque las cookies mejoran constantemente, la interfaz todavía necesita otra forma más segura de guardar datos.

    HTML5 agrega sessionStorage y localStorage. El primero se usa para guardar datos a nivel de sesión y el segundo se usa para guardar datos de manera más persistente. El navegador no tiene ningún comportamiento predeterminado para ellos, lo que deja el trabajo de guardar y leer datos en manos de los desarrolladores de aplicaciones para el usuario, lo que dificulta que los atacantes malintencionados ataquen el estado de inicio de sesión.
    El tamaño de las cookies es limitado. Generalmente, los navegadores limitarán la cantidad total de cookies en el mismo dominio a 4 M, pero no hay límite para sessionStorage y localStorage. Las cookies están asociadas con el
    dominio y la ruta, mientras que sessionStorage y localStorage solo están asociadas con dominio.

  35. Cuándo usar los datos del formulario para solicitudes de publicación y cuándo usar la carga útil de la solicitud

    Respuesta de referencia:

    Los datos del formulario son adecuados para transmitir información simple de pares clave-valor. Dado que la información transmitida es relativamente plana, es difícil transmitir datos profundamente anidados.

    La carga útil de la solicitud es adecuada para transmitir datos en cualquier formato, incluidos números únicos, booleanos, objetos profundamente anidados, matrices, etc., pero la carga útil de la solicitud no es adecuada para transmitir datos de archivos.

    En proyectos con front-end y back-end separados, se recomienda utilizar el formulario de carga útil de solicitud para transferir datos que no sean archivos para transferir el tipo de datos y la estructura de datos más claros. Para la carga de archivos, se recomienda utilizar datos de formulario tradicionales.

  36. ¿Cuáles son los métodos de solicitud http comunes?

    Respuesta de referencia:

    • GET significa obtener recursos del servidor.
    • POST significa enviar información al servidor, generalmente utilizado para generar nuevos datos, como el registro.
    • PUT, indica que desea modificar los datos del servidor, generalmente se usa para modificar
    • DELETE, indicando que deseas eliminar los datos del servidor
    • OPCIONES, ocurre en solicitudes de verificación previa entre dominios, lo que indica que el cliente solicita al servidor el envío entre dominios.
    • TRACE, hace eco de las solicitudes recibidas por el servidor, se utiliza principalmente para pruebas y diagnósticos.
    • CONNECT, utilizado para establecer tuberías de conexión, generalmente utilizado en escenarios de proxy y rara vez utilizado en páginas web.
  37. Enumerar métodos para optimizar el rendimiento de la red

    Respuesta de referencia:

    • Optimizar el volumen de embalaje

      Utilice algunas herramientas para comprimir y ofuscar el código de paquete final para reducir el tamaño del paquete.

    • Embalaje multiobjetivo

      Utilice algunos complementos de empaquetado para empaquetar diferentes versiones de compatibilidad para diferentes navegadores, de esta manera, el código de compatibilidad en cada versión se reducirá considerablemente, reduciendo así el tamaño del paquete.

    • compresión

      Los navegadores modernos generalmente admiten formatos de compresión, por lo que se pueden comprimir varios archivos en el servidor y luego responder al cliente. Siempre que el tiempo de descompresión sea menor que el tiempo de transmisión optimizado, la compresión es factible.

    • CDN

      El uso de CDN puede reducir en gran medida el tiempo de acceso a los recursos estáticos. Especialmente para el acceso a bibliotecas públicas, puede utilizar recursos CDN conocidos, que pueden lograr el almacenamiento en caché entre sitios.

    • cache

      Para todos los recursos estáticos, excepto HTML, se puede activar el caché de negociación y el valor hash del archivo generado por el paquete de la herramienta de compilación se utiliza para reemplazar el caché.

    • http2

      Después de activar http2, aproveche su multiplexación, compresión de encabezados y otras características para aprovechar al máximo el ancho de banda para transferir grandes cantidades de datos de archivos.

    • imagen de sprite

      Para escenarios que no utilizan HTTP2, se pueden fusionar varias imágenes en imágenes de sprites para reducir archivos.

    • diferir, asíncrono

      A través de atributos diferidos y asíncronos, la página puede cargar archivos js lo antes posible

    • captación previa, precarga

      A través del atributo de captación previa, puede permitir que la página descargue previamente recursos que pueden ser utilizados por otras páginas cuando está inactiva.

      A través del atributo de precarga, puede permitir que la página descargue los recursos que esta página puede utilizar de antemano.

    • Múltiples campos de recursos estáticos

      Para escenarios que no utilizan HTTP2, dividir recursos estáticos relativamente independientes en múltiples dominios permite que el navegador abra múltiples conexiones TCP al mismo tiempo y las descargue en paralelo.

  38. Cómo eliminar la sesión

    Respuesta de referencia:

    1. Vencimiento

      Cuando el cliente no pasa el ID de sesión durante mucho tiempo, el servidor puede borrar automáticamente la sesión después del tiempo de vencimiento.

    2. Notificación proactiva del cliente

      Puede usar JS para monitorear el cierre de la página del cliente u otras operaciones de salida y luego notificar al servidor que borre la sesión.

  39. ¿Qué es la resolución de nombres de dominio DNS?

    Respuesta de referencia:

    La resolución de nombres de dominio DNS se refiere al proceso de resolver nombres de dominio en direcciones IP.

    En términos de implementación específica, la resolución de nombres de dominio la completan servidores en múltiples niveles. Al consultar un nombre de dominio, el cliente primero verificará su propia tabla de asignación de DNS. Si no se encuentra ningún registro de resolución, se utilizará el servidor DNS configurado por el usuario. Si no se encuentra ningún registro en el servidor DNS de destino, el cliente continuará busque el siguiente nivel hasta que Al llegar al servidor de nombres de dominio raíz, el servidor de nombres de dominio raíz distribuirá la tarea de resolución a los servidores de nombres de subdominio correspondientes de acuerdo con el tipo de nombre de dominio y buscará en secuencia hasta que se encuentre el registro de resolución. .

Supongo que te gusta

Origin blog.csdn.net/qq_53461589/article/details/132940929
Recomendado
Clasificación