Resumo das perguntas da entrevista online

  1. Descreva resumidamente o processo de conexão TCP (Taoxi)

    Resposta de referência:

    O protocolo TCP estabelece uma conexão ponto a ponto confiável por meio de um handshake de três vias. O processo específico é:

    Primeiro, o servidor entra no estado de escuta e, em seguida, a conexão pode ser processada

    Primeiro handshake: Ao estabelecer uma conexão, o cliente envia um pacote syn para o servidor e entra no estado SYN_SENT, aguardando a confirmação do servidor. Um número de sequência inicial seq também está incluído no pacote enviado. O significado desse handshake é que o cliente deseja estabelecer uma conexão com o servidor.

    Segundo handshake: O servidor recebe o pacote syn e então responde ao cliente com um pacote SYN+ACK. Neste momento, o servidor entra no estado SYN_RCVD. O significado desse handshake é que o servidor responde ao cliente, indicando que recebeu e concordou com a solicitação de conexão do cliente.

    Terceiro handshake: Após receber o pacote SYN do servidor, o cliente envia novamente um pacote ACK ao servidor e entra no estado ESTAB_LISHED.

    Por fim, o servidor recebe o pacote ACK do cliente e entra no estado ESTAB_LISHED, neste ponto a conexão é estabelecida.

  2. Apresentando o ataque man-in-the-middle HTTPS

    Resposta de referência:

    Existem dois tipos principais de ataques HTTPS: ataques de sequestro de SSL e ataques de remoção de SSL.

    Um ataque de sequestro de SSL significa que um invasor sequestra a conexão entre o cliente e o servidor, substitui o certificado legítimo do servidor por um certificado forjado e, assim, obtém as informações passadas entre o cliente e o servidor. Esse método geralmente é fácil de ser descoberto pelos usuários e o navegador exibirá claramente um erro de certificado.No entanto, alguns usuários não têm um forte conhecimento de segurança e podem clicar para continuar navegando para atingir o objetivo do ataque.

    Ataque de remoção de SSL significa que o invasor sequestra a conexão entre o cliente e o servidor. O invasor mantém a conexão HTTPS entre ele e o servidor, mas envia uma conexão HTTP comum ao cliente. Como a conexão HTTP é transmitida em texto não criptografado, ela pode obter todos os dados de texto não criptografado transmitidos pelo cliente.

  3. Introduzir a diferença entre protocolos http1.0, http1.1e http2.0?

    Resposta de referência:

    Vamos falar sobre http1.0 primeiro

    Sua característica é que a conexão TCP será destruída após a conclusão de cada solicitação e resposta, e está estipulado que a próxima solicitação só poderá ser enviada após a conclusão da resposta anterior. Existem dois problemas com isso:

    1. Não é possível reutilizar a conexão

      Cada solicitação requer uma nova conexão TCP, completando três handshakes e quatro ondas, resultando em baixa utilização da rede.

    2. bloqueio de linha

      Se a solicitação anterior for bloqueada por algum motivo, as solicitações subsequentes não serão enviadas.

    Depois, há http1.1

    http1.1 é uma versão melhorada do http1.0, que traz as seguintes melhorias:

    1. Conexão longa

      http1.1 permite adicionar cabeçalhos de solicitação ao solicitar connection:keep-alive, permitindo assim que solicitações de clientes subsequentes reutilizem a conexão TCP anterior dentro de um período de tempo

    2. Gasoduto

      Com base em conexões longas, os pipelines podem continuar a enviar solicitações subsequentes sem esperar pela resposta da primeira solicitação, mas a ordem das respostas ainda é retornada na ordem das solicitações.

    3. Cache

      Adicionado um novo controle de cache de cabeçalho de resposta para implementar o cache do cliente.

    4. Transmissão de ponto de interrupção

      Ao fazer upload/download de recursos, se o recurso for muito grande, divida-o em várias partes e carregue-os/baixe-os separadamente. Se você encontrar uma falha de rede, poderá continuar a solicitação do local onde já o carregou/baixou. de começar do zero, o que melhora a eficiência.

    Finalmente, http2.0

    http2.0 otimiza ainda mais a eficiência da transmissão e apresenta principalmente as seguintes melhorias:

    1. enquadramento binário

      Divida a mensagem transmitida em quadros binários menores. Cada quadro tem seu próprio número de sequência de identificação. Mesmo que seja interrompido aleatoriamente, ele pode ser montado corretamente na outra extremidade.

    2. Multiplexação

      Com base no enquadramento binário, todo o acesso sob o mesmo nome de domínio vem da mesma conexão TCP, e não há mais o problema de bloqueio direto e não há necessidade de cumprir a ordem de resposta.

    3. Compressão da cabeça

      http2.0 substitui informações comuns no cabeçalho por menos caracteres na forma de um dicionário, reduzindo bastante a quantidade de dados no cabeçalho, conseguindo assim menor volume de transmissão

    4. envio de servidor

      http2.0 permite que o servidor envie mensagens diretamente para o cliente sem solicitação explícita do cliente

  4. Por que o HTTP1.1 não consegue multiplexar (Tencent)

    Resposta de referência:

    HTTP/1.1 não transfere binário, mas transfere via texto. Como não existe o conceito de fluxo, ao usar transmissão paralela (multiplexação) para transmitir dados, a extremidade receptora não consegue distinguir as solicitações correspondentes a múltiplas respostas após receber a resposta, portanto não pode remontar os resultados de múltiplas respostas., e a multiplexação não pode ser alcançou.

  5. Explique resumidamente a multiplexação de http2 (NetEase)

    Resposta de referência:

    No HTTP/2, existem dois conceitos muito importantes, nomeadamente frame e stream. Quadro representa a menor unidade de dados. Cada quadro identifica a qual fluxo o quadro pertence. Um fluxo é um fluxo de dados composto de vários quadros. Multiplexação significa que vários fluxos podem existir em uma conexão TCP. Em outras palavras, múltiplas solicitações podem ser enviadas e o peer pode saber a qual solicitação ele pertence através do identificador no quadro. Através desta tecnologia, o problema de bloqueio de linha na versão antiga do HTTP pode ser evitado e o desempenho da transmissão pode ser bastante melhorado.

  6. Fale sobre sua compreensão do handshake de três vias e da onda de quatro vias do TCP

    O protocolo TCP estabelece uma conexão ponto a ponto confiável por meio de um handshake de três vias. O processo específico é:

    Primeiro, o servidor entra no estado de escuta e, em seguida, a conexão pode ser processada

    Primeiro handshake: Ao estabelecer uma conexão, o cliente envia um pacote syn para o servidor e entra no estado SYN_SENT, aguardando a confirmação do servidor. Um número de sequência inicial seq também está incluído no pacote enviado. O significado desse handshake é que o cliente deseja estabelecer uma conexão com o servidor.

    Segundo handshake: O servidor recebe o pacote syn e então responde ao cliente com um pacote SYN+ACK. Neste momento, o servidor entra no estado SYN_RCVD. O significado desse handshake é que o servidor responde ao cliente, indicando que recebeu e concordou com a solicitação de conexão do cliente.

    Terceiro handshake: Após receber o pacote SYN do servidor, o cliente envia novamente um pacote ACK ao servidor e entra no estado ESTAB_LISHED.

    Por fim, o servidor recebe o pacote ACK do cliente e entra no estado ESTAB_LISHED, neste ponto a conexão é estabelecida.

    Quando a conexão precisa ser fechada, são necessárias quatro ondas para fechá-la

    1. O Cliente envia um pacote FIN ao Servidor, indicando que o Cliente deseja ativamente encerrar a conexão, e então entra no estado FIN_WAIT_1, aguardando que o Servidor retorne um pacote ACK. Depois disso, o Cliente não poderá mais enviar dados para o Servidor, mas poderá ler os dados.
    2. Após receber o pacote FIN, o Servidor envia um pacote ACK para o Cliente e então entra no estado CLOSE_WAIT.Depois disso, o Servidor não pode mais ler dados, mas pode continuar a enviar dados para o Cliente.
    3. Após receber o pacote ACK retornado pelo Servidor, o Cliente entra no estado FIN_WAIT_2 e aguarda o Servidor enviar o pacote FIN.
    4. Após o Servidor concluir o envio dos dados, ele envia o pacote FIN para o Cliente, entra no estado LAST_ACK e espera que o Cliente retorne o pacote ACK. Depois disso, o Servidor não poderá ler nem enviar dados.
    5. Depois de receber o pacote FIN, o Cliente envia um pacote ACK para o Servidor, depois entra no estado TIME_WAIT, espera o tempo suficiente (2MSL) para garantir que o Servidor receba o pacote ACK e, finalmente, retorna ao estado CLOSED para liberar recursos de rede. .
    6. Após receber o pacote ACK retornado pelo Cliente, o Servidor retorna ao estado FECHADO e libera recursos da rede.
  7. Apresentando o processo de handshake HTTPS

    Resposta de referência:

    1. O cliente solicita ao servidor e informa ao servidor o algoritmo de criptografia que ele suporta, o comprimento da chave e outras informações.
    2. O servidor responde com chave pública e certificado de servidor
    3. O cliente verifica se o certificado é legítimo, então gera uma chave de sessão, criptografa a chave com a chave pública do servidor e envia o resultado da criptografia ao servidor por meio da solicitação.
    4. O servidor usa a chave privada para descriptografar a chave de sessão criptografada e a salva, depois usa a chave de sessão para criptografar a mensagem e responde ao cliente, indicando que está pronto.
    5. O cliente usa a chave de sessão para descriptografar a mensagem e sabe que o servidor está pronto.
    6. A entrega subsequente de mensagens pelo cliente e pelo servidor usa a chave de sessão para criptografar as informações.
  8. Como o cliente verifica a validade do certificado durante o handshake HTTPS?

    Resposta de referência:

    1. Verifique se a autoridade emissora do certificado de verificação é confiável para o cliente.
    2. Verifique se o certificado foi revogado através de CRL ou OCSP.
    3. Compare a hora do sistema para ver se o certificado de calibração está dentro do período de validade.
    4. Ao verificar se a outra parte possui a chave privada do certificado, pode-se avaliar se o nome de domínio do site do certificado é consistente com o nome de domínio da emissão do certificado.
  9. Quais são os cenários de aplicação dos códigos de status HTTP 301 e 302?

    Resposta de referência:

    301 significa redirecionamento permanente, 302 significa redirecionamento temporário.

    Se o navegador receber um 301, ele armazenará em cache o endereço redirecionado e não solicitará novamente o servidor. Ele usará diretamente o endereço em cache para solicitar, o que pode reduzir o número de solicitações.

    Mas se o navegador receber um 302, o endereço de redirecionamento não será armazenado em cache e o navegador continuará solicitando o endereço original no futuro.

    Portanto, 301 é adequado para cenários de transferência de endereço permanente, como mudanças de nome de domínio; enquanto 302 é adequado para cenários de transferência temporária, como a página inicial saltando temporariamente para a página do evento.

  10. Tanto os cookies quanto os tokens são armazenados no cabeçalho. Por que o token não pode ser sequestrado?

    Resposta de referência:

    Como o navegador envia cookies automaticamente para o servidor, os invasores podem usar esse recurso para realizar ataques CSRF.

    Normalmente, o token não é colocado no cookie. O navegador precisa usar JS para salvá-lo sozinho no armazenamento local. Ele também precisa ser adicionado manualmente ao cabeçalho da solicitação ao fazer uma solicitação, por isso não é fácil causar ataques CSRF.

  11. Apresente como implementar criptografia de token

    Resposta de referência:

    Pegue o formato de token mais comum jwt como exemplo

    O token é dividido em três seções: cabeçalho, carga útil e assinatura.

    Entre eles, o cabeçalho identifica o algoritmo de assinatura e o tipo de token; a carga útil identifica as informações do assunto, incluindo tempo de expiração do token, tempo de liberação, emissor, conteúdo do assunto, etc.; assinatura é o resultado da criptografia obtido pela criptografia das duas primeiras partes usando um algoritmo específico.

    O token é à prova de falsificação. Se um invasor alterar as duas primeiras partes, ela não corresponderá à terceira parte, tornando o token inválido. O invasor não conhece a chave de criptografia, portanto não pode modificar o valor da terceira parte.

    Portanto, desde que a chave secreta não vaze, um token verificado é digno de confiança.

  12. Fale sobre login único (Novo Oriental)

    Resposta de referência:

    O SSO geralmente requer um centro de autenticação independente (passaporte). Todos os logins do subsistema devem passar pelo passaporte. O subsistema em si não participará da operação de login. Quando um sistema faz login com sucesso, o passaporte emitirá um token para cada subsistema. Os subsistemas podem manter tokens para obter seus próprios recursos protegidos. Para reduzir a autenticação frequente, cada subsistema estabelecerá uma sessão parcial após ser autorizado pelo passaporte. Dentro de um determinado período de tempo, não há necessidade de iniciar novamente a autenticação no passaporte.

    O processo específico é:

    1. O usuário acessa os recursos protegidos do Sistema 1. O Sistema 1 descobre que o usuário não está logado, vai para o centro de autenticação SSO e usa seu próprio endereço como parâmetro.
    2. O centro de autenticação sso descobriu que o usuário não estava logado e direcionou o usuário para a página de login.
    3. O usuário insere nome de usuário e senha para enviar o pedido de login
    4. O centro de autenticação SSO verifica as informações do usuário, cria uma sessão entre o usuário e o centro de autenticação SSO, chamada sessão global, e cria um token de autorização.
    5. O centro de autenticação sso irá para o endereço de solicitação original com o token (sistema 1)
    6. O Sistema 1 recebe o token e vai ao centro de certificação SSO para verificar se o token é válido.
    7. token de verificação do centro de autenticação sso, retorno válido, sistema de registro 1
    8. O sistema 1 utiliza o token para criar uma sessão com o usuário, chamada de sessão parcial, retornando o recurso protegido
    9. O usuário acessa recursos protegidos no Sistema 2
    10. O sistema 2 descobre que o usuário não está logado, vai para o centro de autenticação SSO e usa seu próprio endereço como parâmetro
    11. O centro de autenticação sso descobre que o usuário efetuou login, volta para o endereço do sistema 2 e anexa o token
    12. O Sistema 2 recebe o token e vai ao centro de certificação SSO para verificar se o token é válido.
    13. token de verificação do centro de certificação sso, retorno válido, sistema de registro 2
    14. O sistema 2 utiliza o token para criar uma sessão parcial com o usuário, retornando o recurso protegido
  13. Como o http1.1 reutiliza conexões TCP? (NetEase)

    Resposta de referência:

    Quando o cliente solicita ao servidor, ele informa ao servidor que o protocolo utilizado é http1.1 através da linha de solicitação e ao mesmo tempo é incluído no cabeçalho da solicitação connection:keep-alive(para manter a compatibilidade), informando ao servidor que se trata de um longo conexão e solicitações subsequentes podem reutilizar essa conexão TCP.

    A vantagem disso é que reduz o número de handshakes de três vias e ondas de quatro vias, o que melhora até certo ponto a utilização da rede. Porém, como http1.1 não suporta multiplexação, a sequência de resposta deve chegar ao cliente na ordem das solicitações, e a transmissão paralela não pode ser verdadeiramente realizada.Portanto, antes do surgimento do http2.0, recursos estáticos, como imagens, foram frequentemente distribuídos para diferentes servidores em projetos reais.Servidor de recursos sob o nome de domínio para obter uma verdadeira transmissão paralela.

  14. Como retomar o upload de arquivos após o ponto de interrupção (NetEase)

    Resposta de referência:

    O cliente fragmenta o conteúdo binário do arquivo e cada dado é identificado por um número de série em ordem. Ao fazer o upload de cada dado, seu número de série também é anexado. Quando o servidor recebe cada dado, ele os salva em um arquivo temporário e registra o hash e o número de sequência de cada arquivo.

    Se o upload for interrompido, ao fazer upload novamente no futuro, você poderá solicitar ao servidor o número de série dos fragmentos carregados, e o cliente só precisará fazer upload dos fragmentos restantes.

    Quando todos os fragmentos são carregados, o servidor monta o arquivo completo na ordem dos fragmentos e exclui os arquivos fragmentados.

  15. Apresentando SSL e TLS (Secoo)

    Resposta de referência:

    São todos protocolos utilizados para garantir a segurança da transmissão, entre a camada de transporte e a camada de aplicação.TLS é uma versão atualizada do SSL.

    Seus processos básicos são os mesmos:

    1. O cliente solicita a chave pública ao servidor e usa um certificado digital para verificar a chave pública.
    2. O cliente usa a chave pública para criptografar a chave de sessão, e o servidor usa a chave privada para descriptografar a chave de sessão, obtendo assim uma chave de sessão reconhecida por ambas as partes.
    3. Os dados transmitidos são criptografados usando a chave de sessão e depois transmitidos. A parte receptora usa a chave de sessão para descriptografar e obter os dados originais.
  16. Fale sobre o modelo de rede de cinco camadas (Secoo)

    Resposta de referência:

    De cima para baixo são: camada de aplicação, camada de transporte, camada de rede, camada de enlace de dados e camada física. Ao enviar uma mensagem, a mensagem é empacotada de cima para baixo, e cada camada adiciona pacotes com base na camada anterior. Ao receber a mensagem, a mensagem é descompactada de baixo para cima e a informação original é finalmente obtida.

    em:

    A camada de aplicação é orientada principalmente para cenários de aplicação na Internet, como páginas web, e-mails, centros de arquivos, etc. Seus protocolos representativos incluem http, smtp, pop3, ftp, DNS, etc.

    A camada de transporte é orientada principalmente para o processo de transmissão. Por exemplo, o protocolo TCP é para garantir uma transmissão confiável, enquanto o protocolo UDP é uma transmissão sem conexão. Eles fornecem diferentes métodos de transmissão.

    A camada de rede resolve principalmente o problema de como localizar alvos, como IP, ICMP, ARP, etc.

    A função da camada de enlace de dados é transmitir dados de forma confiável ao alvo, como protocolos Ethernet comuns e protocolos P2P

    A camada física serve para regular os dispositivos físicos usados ​​em ambas as extremidades da rede, como Bluetooth, wifi, fibra óptica, conectores de cabos de rede, etc.

  17. A diferença entre GET e POST (Liulishuo)

    Resposta de referência:

    Do ponto de vista do protocolo http, GET e POST são apenas as primeiras palavras na linha de solicitação. Além da semântica diferente, na verdade não há diferença essencial.

    A razão pela qual ocorrem várias diferenças no desenvolvimento real é principalmente devido ao comportamento padrão do navegador.

    Afetados pelo navegador, no desenvolvimento real, GET e POST têm as seguintes diferenças:

    1. Quando o navegador envia uma solicitação GET, ele não inclui o corpo da solicitação.
    2. A quantidade de informações transmitidas pela solicitação GET é limitada e adequada para transmitir uma pequena quantidade de dados; a quantidade de informações transmitidas pela solicitação POST é ilimitada e adequada para transmitir uma grande quantidade de dados.
    3. As solicitações GET só podem transmitir dados ASCII e os dados não ASCII precisam ser codificados; as solicitações POST não têm restrições.
    4. A maioria dos dados passados ​​pelas solicitações GET são anexados ao parâmetro path. A página pode ser completamente reproduzida compartilhando o endereço, mas também expõe os dados. Se houver dados confidenciais a serem passados, as solicitações GET não devem ser usadas, pelo menos pelo menos eles não devem ser colocados no caminho.
    5. Ao atualizar a página, se a página atual for obtida por meio de uma solicitação POST, o navegador perguntará ao usuário se deseja reenviá-la. Se a página for obtida por solicitação GET, não haverá prompt.
    6. O endereço solicitado pelo GET pode ser salvo como favorito do navegador, mas não pelo POST.
  18. O que é sequestro de http?

    Resposta de referência:

    Isso significa que o invasor estabelece um canal de conexão entre o cliente e o servidor ao mesmo tempo. De alguma forma, a solicitação do cliente é enviada para o seu próprio servidor, e então ele tem a capacidade de controlar o conteúdo da resposta, mostrando assim ao cliente a mensagem errada. informação.

  19. Sequestro de HTTP, sequestro de DNS e XSS

    Resposta de referência:

    sequestro de http significa que o invasor estabelece um canal de conexão entre o cliente e o servidor ao mesmo tempo. De alguma forma, a solicitação do cliente é enviada para seu próprio servidor, e então ele tem a capacidade de controlar o conteúdo da resposta, exibindo-o assim ao cliente. Informações erradas, como adicionar algum conteúdo publicitário à página.

    O sequestro de DNS refere-se a um invasor que sequestra um servidor DNS e obtém autoridade para modificar os registros de resolução de DNS, fazendo com que o nome de domínio solicitado pelo cliente seja resolvido para o endereço IP errado. Dessa forma, o invasor rouba informações do usuário ou destrói o normal original. serviços. .

    XSS refere-se a ataques de script entre sites. O invasor aproveita as vulnerabilidades do site e adiciona alguns scripts maliciosos ao conteúdo do formulário quando o formulário é enviado.Quando outros usuários normais navegam na página e o script malicioso do invasor aparece na página, o script é executado, fazendo com que a página serão destruídos. ou as informações do usuário serão roubadas.

    Para evitar ataques XSS, você precisa filtrar o código do script no lado do servidor, remover alguns elementos e atributos perigosos ou codificar entidades HTML em elementos.

  20. Introdução ao ataque xss csrf

    Resposta de referência:

    XSS:

    XSS refere-se a ataques de script entre sites. O invasor aproveita as vulnerabilidades do site e adiciona alguns scripts maliciosos ao conteúdo do formulário quando o formulário é enviado.Quando outros usuários normais navegam na página e o script malicioso do invasor aparece na página, o script é executado, fazendo com que a página serão destruídos. ou as informações do usuário serão roubadas.

    Para evitar ataques XSS, você precisa filtrar o código do script no lado do servidor, remover alguns elementos e atributos perigosos ou codificar entidades HTML em elementos.

    CSRF:

    CSRF é uma falsificação de solicitação entre sites, um método de ataque que coage os usuários a realizar operações não intencionais no aplicativo da web atualmente conectado.

    Ele primeiro orienta o usuário a visitar um site perigoso. Quando o usuário visita o site, o site enviará uma solicitação ao site atacado. Essa solicitação será enviada com o cookie do usuário, para que as informações de identidade do usuário sejam usadas para concluir o ataque .

    Existem muitas maneiras de se defender contra ataques CSRF:

    1. Não use cookies
    2. Adicionar verificação de token de verificação ao formulário
    3. Use o campo sameSite em cookies
    4. O servidor verifica o campo de referência
  21. Autenticação https é o processo de autenticação TSL/SSL

    Resposta de referência:

    1. O cliente solicita ao servidor e informa ao servidor o algoritmo de criptografia que ele suporta, o comprimento da chave e outras informações.
    2. O servidor responde com chave pública e certificado de servidor
    3. O cliente verifica se o certificado é legítimo, então gera uma chave de sessão, criptografa a chave com a chave pública do servidor e envia o resultado da criptografia ao servidor por meio da solicitação.
    4. O servidor usa a chave privada para descriptografar a chave de sessão criptografada e a salva, depois usa a chave de sessão para criptografar a mensagem e responde ao cliente, indicando que está pronto.
    5. O cliente usa a chave de sessão para descriptografar a mensagem e sabe que o servidor está pronto.
    6. A entrega subsequente de mensagens pelo cliente e pelo servidor usa a chave de sessão para criptografar as informações.
  22. Por que é necessária uma autoridade CA para assinar o certificado?

    Resposta de referência:

    Principalmente para resolver o problema de confiabilidade do certificado. Sem uma autoridade assinando o certificado, o cliente não tem como saber se o certificado é falsificado, aumentando assim o risco de ataques man-in-the-middle e tornando o https sem sentido.

  23. O processo de autenticação envolverá os conceitos de chaves, criptografia simétrica, criptografia assimétrica e resumos. Por favor, explique.

    Resposta de referência:

    chave

    Uma chave é um parâmetro inserido em um algoritmo que converte texto simples em texto cifrado ou texto cifrado em texto simples. As chaves são divididas em chaves simétricas e chaves assimétricas, que são usadas na criptografia simétrica e na criptografia assimétrica, respectivamente.

    Criptografia simétrica

    A criptografia simétrica também é chamada de criptografia de chave privada, o que significa que o remetente e o destinatário das informações usam a mesma chave para criptografar e descriptografar os dados. A criptografia simétrica é caracterizada por algoritmo aberto, criptografia rápida e velocidade de descriptografia, e é adequada para criptografar grandes quantidades de dados.Algoritmos de criptografia simétrica comuns incluem DES, 3DES, TDEA, Blowfish, RC5 e IDEA.

    criptografia assimétrica

    A criptografia assimétrica também é chamada de criptografia de chave pública. A criptografia assimétrica oferece melhor segurança do que a criptografia simétrica. A comunicação criptografada simetricamente usa a mesma chave entre ambas as partes. Se a chave de uma das partes vazar, toda a comunicação será quebrada. A criptografia assimétrica usa um par de chaves, ou seja, uma chave pública e uma chave privada, e elas aparecem em pares. A chave privada é mantida sozinha e não pode ser divulgada ao mundo exterior. Uma chave pública refere-se a uma chave pública que qualquer pessoa pode obter. Criptografe com a chave pública ou privada e descriptografe com a outra.

    Resumo

    O algoritmo Digest também é chamado de algoritmo hash/hash. Ele converte dados de qualquer comprimento em uma sequência de dados de comprimento fixo (geralmente representada por uma sequência hexadecimal) por meio de uma função. O algoritmo é irreversível.

  24. Qual é o protocolo webSocket? Você pode descrevê-lo brevemente?

    Resposta de referência:

    O protocolo websocket é um novo protocolo trazido pelo HTML5. Comparado ao http, é um protocolo de conexão persistente. Ele usa o protocolo http para completar o handshake e, em seguida, envia mensagens através do canal de conexão TCP. Usando o protocolo websocket, o servidor pode enviar mensagens ativamente.

    Em primeiro lugar, se o cliente quiser iniciar uma conexão websocket, ele deve primeiro enviar uma solicitação http ao servidor para completar o handshake. O caminho na linha de solicitação precisa usar o endereço inicial e tags devem ser adicionadas à ws:solicitação cabeçalho upgrade、connection、Sec-WebSocket-Key、Sec-WebSocket-Version.

    Então, depois que o servidor recebe a solicitação, ele descobre que é uma solicitação de handshake do protocolo websocket, então a linha de resposta contém Switching Protocolse o cabeçalho de resposta contém upgrade、connection、Sec-WebSocket-Accepta tag

    Assim que o cliente recebe a resposta, o handshake é concluído e as mensagens são enviadas e recebidas diretamente usando a conexão TCP estabelecida.

  25. Quais são as vantagens do webSocket em relação ao http tradicional?

    Resposta de referência:

    Quando precisamos observar mudanças nos dados em tempo real da página (como chat, gráfico de linhas K), costumamos usar dois métodos no passado.

    A primeira é a sondagem curta, ou seja, o cliente envia mensagens ao servidor de vez em quando para perguntar se há novos dados.

    O segundo tipo é a sondagem longa, que inicia uma solicitação ao servidor. O servidor pode suspender a solicitação e esperar até que haja uma nova mensagem antes de responder. Após responder, o cliente inicia imediatamente outra solicitação e repete todo o processo.

    De qualquer forma, isso expõe a fraqueza do protocolo http, ou seja, a resposta deve ocorrer após a solicitação, e o servidor é passivo e não pode enviar mensagens ativamente. E permitir que o cliente inicie solicitações continuamente consome recursos em vão.

    O surgimento do websocket é para resolver esse problema. Depois de usar o protocolo http para completar o handshake, ele pode estabelecer uma conexão persistente com o servidor. O servidor pode enviar mensagens ativamente para o cliente sempre que necessário, o que consome menos recursos e é em tempo real.Também o mais alto.

  26. Como sequestrar solicitações https, fornecer ideias

    Resposta de referência:

    https é à prova de falsificação. Desde que o processo de verificação do certificado do navegador esteja correto, é difícil atacar sem que o usuário perceba. No entanto, se o processo de verificação do certificado do navegador puder ser alterado, há uma chance de implementar um ataque https man-in-the-middle.

    Portanto, para sequestrar https, você deve primeiro falsificar um certificado e encontrar uma maneira de fazer com que os usuários confiem nesse certificado.Existem muitas maneiras, como vírus, malware, indução, etc. Depois que o certificado for confiável, ele poderá ser atacado usando um certificado forjado usando um ataque man-in-the-middle comum.

  27. Como resolver problemas entre domínios?

    Resposta de referência:

    1. Usando JSONP

      Esta é uma maneira antiga de resolver problemas entre domínios.

      Quando uma solicitação de domínio cruzado for necessária, prepare uma função que processe os dados do servidor com antecedência, depois gere um <script>elemento srcapontando para o site de domínio cruzado e passe o nome da função preparada para o servidor por meio do parâmetro de endereço.

      O site de domínio cruzado retorna um script que chama essa função.Quando o cliente recebe o script, ele executa a função pré-preparada para obter a aquisição de dados de domínio cruzado.

      JSONP é simples de implementar e tem boa compatibilidade, mas suas deficiências também são óbvias: ele suporta apenas solicitações get, tem problemas de segurança e é relativamente intrusivo ao código do lado do servidor.

    2. Usar cors

      Ao solicitar, o cliente usa alguns cabeçalhos de solicitação especiais para solicitar acesso entre domínios ao servidor e informa ao servidor seu próprio comportamento por meio desses cabeçalhos de solicitação. O servidor decide se permite solicitações entre domínios com base em suas próprias regras. Se for permitido, ele informa ao cliente por meio do cabeçalho de resposta que ele pode enviar solicitações entre domínios.

      O protocolo cors tem sido suportado por vários navegadores convencionais. É altamente seguro e não invade o código do servidor. Atualmente é o método de domínio cruzado mais popular.

    Além disso, o processamento entre domínios nos tempos antigos também incluía iframe, formulário, etc. Como suas falhas são muito óbvias, eles raramente são usados.

  28. Como implementar mensagens instantâneas no front-end?

    Resposta de referência:

    1. Enquete curta. Ou seja, o cliente envia mensagens ao servidor de vez em quando para perguntar se há novos dados.
    2. A sondagem longa inicia uma solicitação ao servidor. O servidor pode suspender a solicitação e esperar até que haja novas informações antes de responder. Após responder, o cliente inicia imediatamente outra solicitação e repete todo o processo.
    3. websocket, após a conclusão do handshake, um canal de conexão persistente será estabelecido e o servidor poderá enviar novas mensagens ao cliente a qualquer momento
  29. Códigos de status HTTP comuns 301 302 304 403

    Resposta de referência:

    Redirecionamento permanente 301, o navegador armazenará em cache o endereço redirecionado e, quando o usuário visitar o endereço original novamente no futuro, orientará diretamente o usuário a visitar o novo endereço.

    Redirecionamento temporário 302, o navegador guiará o usuário para o novo endereço, mas não armazenará em cache o endereço original.Na próxima vez que o usuário acessar o endereço de origem, o navegador ainda precisará solicitar o servidor do endereço original.

    304 O recurso não foi modificado. O servidor usa este código de status para informar ao cliente que o recurso solicitado é o mesmo do passado e não foi alterado. É recomendado usar o cache passado. Normalmente, o servidor não inclui nenhum corpo de resposta em resposta a um código de status 304.

    403 Acesso não permitido. O servidor informa ao cliente através deste código de status que o acesso a este recurso não é permitido no momento. Esse código de status geralmente ocorre quando as permissões são insuficientes.

  30. O que acontece depois de inserir um endereço na barra de endereços do navegador e pressionar a tecla Enter?

    1. Resposta de referência:

      1. O navegador completa automaticamente o protocolo e a porta
      2. O navegador conclui automaticamente a codificação do URL
      3. O navegador pesquisa o cache local de acordo com o endereço URL e verifica se o cache foi atingido de acordo com as regras de cache.Se o cache for atingido, o cache será usado diretamente e nenhuma solicitação será feita novamente.
      4. Encontre o endereço IP do servidor através da resolução DNS
      5. O navegador envia uma solicitação ao servidor para estabelecer uma conexão TCP. Após completar o handshake triplo, o canal de conexão é estabelecido.
      6. Se o protocolo HTTPS for utilizado, um handshake SSL também será realizado para estabelecer um canal criptografado. Ao usar um handshake SSL, é determinado se HTTP2 é usado
      7. O navegador decide quais cookies incluir nos cabeçalhos da solicitação
      8. O navegador define automaticamente o cabeçalho da solicitação, a versão do protocolo e o cookie e emite uma solicitação GET.
      9. O servidor processa a solicitação e entra no processo de processamento back-end. Após concluir o processamento, o servidor responde com uma mensagem HTTP ao navegador.
      10. O navegador decide se deseja manter a conexão TCP com base na versão do protocolo usada e na convenção do campo Conexão.
      11. O navegador determina como lidar com essa resposta com base no código de status da resposta.
      12. O navegador identifica o tipo de resposta com base no campo Content-Type no cabeçalho da resposta. Se for texto/html, ele executa a análise HTML no conteúdo do corpo da resposta, caso contrário, realiza outro processamento.
      13. O navegador conclui as configurações de cache e cookies com base em outro conteúdo no cabeçalho de resposta.
      14. O navegador começa a analisar o HTML de cima para baixo. Se encontrar um link de recurso externo, ele solicitará ainda mais o recurso.
      15. Durante o processo de análise, uma árvore DOM e uma árvore CSSOM são geradas e, em seguida, mescladas em uma árvore de renderização (árvore de renderização) durante a geração, em seguida, calculam a posição e o tamanho (refluxo) de cada nó na árvore de renderização e, finalmente, usam cada GPU do nó desenha na tela (repintar)
      16. Uma série de eventos também será acionada durante o processo de análise. Quando a árvore DOM for concluída, o evento DOMContentLoaded será acionado. Quando todos os recursos forem carregados, o evento de carregamento será acionado.
  31. Aperto de mão HTTPS

    Resposta de referência:

    1. O cliente solicita ao servidor e informa ao servidor o algoritmo de criptografia que ele suporta, o comprimento da chave e outras informações.
    2. O servidor responde com chave pública e certificado de servidor
    3. O cliente verifica se o certificado é legítimo, então gera uma chave de sessão, criptografa a chave com a chave pública do servidor e envia o resultado da criptografia ao servidor por meio da solicitação.
    4. O servidor usa a chave privada para descriptografar a chave de sessão criptografada e a salva, depois usa a chave de sessão para criptografar a mensagem e responde ao cliente, indicando que está pronto.
    5. O cliente usa a chave de sessão para descriptografar a mensagem e sabe que o servidor está pronto.
    6. A entrega subsequente de mensagens pelo cliente e pelo servidor usa a chave de sessão para criptografar as informações.
  32. Para que é usado o código de verificação da página da Web? Para quais problemas de segurança ele é usado para resolver?

    Resposta de referência:

    O código de verificação é usado principalmente para permitir ao servidor distinguir se a solicitação é enviada por um ser humano ou por uma máquina. Isso é feito para evitar que alguns programas enviem maliciosamente uma grande quantidade de informações ao servidor, o que, por sua vez, faz com que o servidor gere uma grande quantidade de dados indesejados. Às vezes, os códigos de verificação também podem impedir que as máquinas quebrem as senhas dos usuários com força bruta, enviando continuamente informações de login em um curto período de tempo e tentando várias combinações de senhas para atingir o objetivo da quebra.

  33. A diferença entre http1.0, http2.0, http3.0

    Resposta de referência:

    http1.0

    A conexão TCP será destruída após cada solicitação e resposta, e a próxima solicitação só poderá ser enviada após a conclusão da resposta anterior. Existem dois problemas com isso:

    1. Não é possível reutilizar a conexão

      Cada solicitação requer uma nova conexão TCP, completando três handshakes e quatro ondas, resultando em baixa utilização da rede.

    2. bloqueio de linha

      Se a solicitação anterior for bloqueada por algum motivo, as solicitações subsequentes não serão enviadas.

    http2.0

    http2.0 otimiza a eficiência da transmissão e possui principalmente as seguintes melhorias:

    1. enquadramento binário

      Divida a mensagem transmitida em quadros binários menores. Cada quadro tem seu próprio número de sequência de identificação. Mesmo que seja interrompido aleatoriamente, ele pode ser montado corretamente na outra extremidade.

    2. Multiplexação

      Com base no enquadramento binário, todo o acesso sob o mesmo nome de domínio vem da mesma conexão TCP, e não há mais o problema de bloqueio direto e não há necessidade de cumprir a ordem de resposta.

    3. Compressão da cabeça

      http2.0 substitui informações comuns no cabeçalho por menos caracteres na forma de um dicionário, reduzindo bastante a quantidade de dados no cabeçalho, conseguindo assim menor volume de transmissão

    4. envio de servidor

      http2.0 permite que o servidor envie mensagens diretamente para o cliente sem solicitação explícita do cliente

    http3.0

    http3.0 ainda está em fase de rascunho, abandonando completamente o protocolo TCP e mudando para o protocolo UDP para melhorar ainda mais o desempenho.

    Embora o http2.0 tenha feito muitas otimizações, ele não consegue se livrar dos problemas do próprio protocolo TCP, como muito tempo para estabelecer uma conexão, problemas de bloqueio de pares, etc.

    Para garantir a confiabilidade da transmissão, http3.0 utiliza o protocolo QUIC.

  34. A diferença entre cookie/sessionStorage/localStorage

    Resposta de referência:

    Cookies, sessionStorage e localStorage são formas de salvar dados locais.

    Entre eles, os cookies têm boa compatibilidade e são suportados por todos os navegadores. O navegador terá alguns comportamentos padrão para cookies. Por exemplo, quando set-cookieum campo aparecer no cabeçalho da resposta, o navegador salvará automaticamente o valor do cookie; por outro exemplo, quando o navegador enviar uma solicitação, ele anexará o cookie correspondente ao cabeçalho da solicitação. Esses comportamentos padrão tornam os cookies responsáveis ​​por manter o status de logado por um longo período. Ao mesmo tempo, é precisamente por causa do comportamento padrão do navegador que invasores mal-intencionados podem tirar vantagem dele.Os ataques CSRF são um método típico de ataque que utiliza cookies. Embora os cookies estejam em constante melhoria, o front-end ainda precisa de outra forma mais segura de salvar dados.

    HTML5 adiciona sessionStorage e localStorage, o primeiro é usado para salvar dados no nível da sessão e o último é usado para salvar dados de forma mais persistente. O navegador não possui nenhum comportamento padrão para eles, o que deixa o trabalho de salvar e ler dados para os desenvolvedores front-end, dificultando que invasores mal-intencionados ataquem o estado logado.
    O tamanho dos cookies é limitado. Geralmente, os navegadores limitam a quantidade total de cookies no mesmo domínio a 4 milhões, mas não há limite para sessionStorage e localStorage. Os cookies estão
    associados ao domínio e ao caminho, enquanto sessionStorage e localStorage estão associados apenas a domínio.

  35. Quando usar dados de formulário para solicitações de postagem e quando usar carga útil de solicitação

    Resposta de referência:

    os dados do formulário são adequados para transmitir informações simples de pares de valores-chave. Como as informações transmitidas são relativamente planas, é difícil transmitir dados profundamente aninhados.

    A carga útil da solicitação é adequada para transmitir dados em qualquer formato, incluindo números únicos, booleanos, objetos profundamente aninhados, matrizes, etc., mas a carga útil da solicitação não é adequada para transmitir dados de arquivo.

    Em projetos com front-end e back-end separados, é recomendado usar o formulário de carga útil de solicitação para transferir dados que não sejam de arquivo para transferir o tipo de dados e a estrutura de dados mais claros. Para uploads de arquivos, é recomendado usar dados de formulário tradicionais.

  36. Quais são os métodos comuns de solicitação http?

    Resposta de referência:

    • GET significa obter recursos do servidor
    • POST significa enviar informações ao servidor, normalmente utilizado para gerar novos dados, como cadastro
    • PUT, indicando que você deseja modificar os dados do servidor, geralmente usado para modificar
    • DELETE, indicando que você deseja excluir os dados do servidor
    • OPTIONS, ocorre em solicitações de simulação entre domínios, indicando que o cliente se aplica ao servidor para envio entre domínios
    • TRACE, ecoa solicitações recebidas pelo servidor, usado principalmente para testes e diagnósticos
    • CONNECT, usado para estabelecer canais de conexão, geralmente usado em cenários de proxy e raramente usado em páginas da web
  37. Listar métodos para otimizar o desempenho da rede

    Resposta de referência:

    • Otimize o volume de embalagens

      Use algumas ferramentas para compactar e ofuscar o código do pacote final para reduzir o tamanho do pacote

    • Embalagem multialvo

      Use alguns plug-ins de empacotamento para empacotar diferentes versões de compatibilidade para diferentes navegadores. Desta forma, o código de compatibilidade em cada versão será bastante reduzido, reduzindo assim o tamanho do pacote.

    • compressão

      Os navegadores modernos geralmente suportam formatos de compactação, de modo que vários arquivos no servidor podem ser compactados e depois respondidos ao cliente.Desde que o tempo de descompactação seja menor que o tempo de transmissão otimizado, a compactação é viável.

    • CDN

      O uso de CDN pode reduzir significativamente o tempo de acesso de recursos estáticos. Especialmente para acesso a bibliotecas públicas, você pode usar recursos CDN bem conhecidos, que podem obter cache entre sites.

    • esconderijo

      Para todos os recursos estáticos, exceto HTML, o cache de negociação pode ser ativado e o valor de hash do arquivo gerado pelo pacote da ferramenta de construção é usado para substituir o cache.

    • http2

      Depois de ativar o http2, aproveite sua multiplexação, compactação de cabeçalho e outros recursos para aproveitar ao máximo a largura de banda para transferir grandes quantidades de dados de arquivos.

    • Imagem do Sprite

      Para cenários que não usam HTTP2, várias imagens podem ser mescladas em imagens sprite para reduzir arquivos.

    • adiar, assíncrono

      Através dos atributos defer e async, a página pode carregar arquivos js o mais cedo possível

    • pré-busca, pré-carregamento

      Através do atributo prefetch, você pode permitir que a página faça download prévio de recursos que podem ser usados ​​por outras páginas quando ela estiver ociosa.

      Através do atributo preload, você pode permitir que a página baixe antecipadamente os recursos que poderão ser utilizados por esta página.

    • Vários campos de recursos estáticos

      Para cenários que não usam HTTP2, dividir recursos estáticos relativamente independentes em vários domínios permite que o navegador abra várias conexões TCP ao mesmo tempo e baixe-as em paralelo.

  38. Como eliminar a sessão

    Resposta de referência:

    1. Expiração

      Quando o cliente não passa o ID da sessão por um longo período, o servidor pode limpar automaticamente a sessão após o tempo de expiração.

    2. Notificação proativa do cliente

      Você pode usar JS para monitorar o fechamento da página do cliente ou outras operações de saída e, em seguida, notificar o servidor para limpar a sessão.

  39. O que é resolução de nomes de domínio DNS?

    Resposta de referência:

    A resolução de nomes de domínio DNS refere-se ao processo de resolução de nomes de domínio em endereços IP.

    Em termos de implementação específica, a resolução de nomes de domínio é realizada por servidores em vários níveis. Ao consultar um nome de domínio, o cliente primeiro verificará sua própria tabela de mapeamento DNS. Se nenhum registro de resolução for encontrado, o servidor DNS configurado pelo usuário será usado. Se nenhum registro for encontrado no servidor DNS de destino, o cliente continuará a procure o próximo nível até Ao chegar ao servidor de nomes de domínio raiz, o servidor de nomes de domínio raiz distribuirá a tarefa de resolução para os servidores de nomes de subdomínio correspondentes de acordo com o tipo de nome de domínio e pesquisará em sequência até que o registro de resolução seja encontrado .

Acho que você gosta

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