Home Blogs Usando EdgeJS do Layer0 para configurar cabeçalhos de segurança personalizados
Applications

Usando EdgeJS do Layer0 para configurar cabeçalhos de segurança personalizados

About The Author

Outline

Implementar cabeçalhos de segurança tornou-se extremamente importante, pois o número de violações e roubos de dados estão aumentando rapidamente a cada dia. Os cabeçalhos de segurança oferecem uma parte fácil de implementar da solução: Basta passar cabeçalhos HTTP específicos para proteger seu site contra ataques comuns como XSS, injeção de código, clickjacking, etc.

O que são cabeçalhos de segurança?

Os aplicativos da Web podem enviar comandos especiais para o navegador para proteger sites contra violações ou vulnerabilidades do lado do cliente, conhecidas como cabeçalhos de segurança.

Quando um usuário visita um site em seu navegador, o servidor responde com cabeçalhos de resposta HTTP. Esses cabeçalhos, compostos por metadados, compartilham informações com o cliente e o servidor. Esta informação compartilhada define como os navegadores devem interagir com o site. Os cabeçalhos de segurança fornecem proteção poderosa contra várias vulnerabilidades e ameaças de aplicativos da Web.

Este blog irá dividir os seguintes cabeçalhos de segurança importantes:

  • Política de segurança de conteúdo (CSP)
  • X-Content-Type-Options
  • X-Frame-Options
  • Política de recursos de origem cruzada (CORP)
  • Política de Embedder de Origem Transcruzada (COEP)
  • Política de abertura de origem cruzada (COOP)
  • Política de referência
  • Política de permissões
  • Segurança de transporte restrito HTTP (HSTS)

Importância dos cabeçalhos de segurança

Os cabeçalhos de segurança HTTP são uma parte fundamental da segurança do site; no entanto, apenas 1,6% dos primeiros um milhão de sites implementaram a Política de Segurança de Conteúdo (CSP) e apenas um mero .2% dos sites implementam somente o CSP-Report.

Chocante, certo?! A falta de CSP HTTP Header elimina os mecanismos de defesa contra Cross-Site Scripting (XSS) e outros ataques de injeção do lado do cliente. A violação de dados da British Airways é um dos incidentes que ilustra como, devido à falta de segurança do lado do cliente, os nomes, endereços de rua, endereços de e-mail, números de cartão de crédito, datas de validade e códigos de segurança de cartão de 380 000 clientes foram expostos, que permaneceram indetetados por 15 dias.

Adicionando segurança com EdgeJS do Layer0

Com a plataforma de implantação do Layer0, coisas como o TLS são configuradas automaticamente para cada link de implantação, para que os desenvolvedores possam enviar com segurança por padrão. Neste blog, olhamos de perto os cabeçalhos de segurança importantes e um exemplo para mostrar a rapidez com que você pode proteger um site com configuração de rotas no Layer0.

Introdução aos cabeçalhos de segurança com o Edgio

Política de segurança de conteúdo (CSP)

Como o CSP impede o carregamento de recursos de origens não permitidas

O Content-Security-Policy fornece uma camada adicional para evitar ataques de scripts entre sites (XSS) , restringindo scripts, estilos, imagens, fontes e mídia de serem carregados (e executados) de origens permitidas específicas. Independentemente da segurança do seu back-end, se os agentes defeituosos puderem atacar o código executado no navegador em vez de no servidor, os dados da sessão do usuário serão comprometidos e as informações confidenciais serão expostas. Um dos muitos exemplos (como a violação de dados da British Airways) é o ataque MageCart no módulo de pagamento da Ticketmaster. A violação da Ticketmaster resultou em 40 000 vítimas de roubo de cartão de crédito e permaneceu ativa por 5 meses antes de ser pego! Tudo apenas injetando um script de skimming de formulário dentro do navegador.

Const ContentSecurityPolicy:Default-src ‘self’; script-src ‘self”insafe”insafe”insafe-eval”insafe-inline’ *.layer0.co; style-src ‘self”insafe-insafe’ *.googleapis.com; img-src * blob: Data:; media-src; *src; *.gstatic.com; ‘src; ‘src; ‘src; ‘src’; ‘src’; ‘src; ‘src’ o novo roteador() .get(“/:route”, (“setResponseHeader”) (> “Content-Security-Policy”, ContentSecurityPolicy.replace(//n/g, “”)))

Content-Security-Policy oferece a você a capacidade de:

  1. Supere ataques XSS (Cross Site Scripting)
  2. Evite o ClickJacking
  3. Reportar violação(s) às regras do CSP

X-Content-Type-Options

Como configurar o X-Content-Type-Options impede o sniffing do tipo MIME

O cabeçalho X-Content-Type-Options indica que os tipos MIME (Multipurpose Internet Mail Extensions, um identificador para formatos de arquivo) especificados nos cabeçalhos Content-Type devem ser rigorosamente seguidos. Com o MIME Type sniffing, operações como o upload de imagens podem executar executáveis que podem ser maliciosos, onde o cabeçalho X-Content-Type-Options entra em jogo.

O novo roteador() .get(“/:route”, (“setResponseHeader”) (“X-Content-Type-Options”,> “nosniff”))

X-Frame-Options

Cabeçalho X-Frame-Options

O cabeçalho X-Frame-Options indica se um navegador deve ser autorizado a renderizar uma página em um quadro, iframe, embed ou tag de objeto a ser evitado ataques de clique-jacking . Se definido como NEGAR ou SAMEORIGIN garante que seu conteúdo não está incorporado em outros sites ou apenas incorporado em sites com a mesma origem, respetivamente.

O novo roteador() .get(“/:route”, (“setResponseHeader”) (“X-Frame-Options”,> “SAMEORIGIN”))

X-Frame-Options dá-lhe a capacidade de:

  1. Evite ataques de ClickJacking
  2. Indique se um navegador deve ou não ter permissão para renderizar uma página em A. <estrutura>, <iframe>, <incorporar> ou <objeto>

Política de recursos de origem cruzada (CORP)

O Corp permite que os servidores se protejam contra certas incorporações entre origens ou entre sites do recurso solicitado (por exemplo, respostas da API). Ele também evita ataques especulativos de canal lateral como Spectre .

O novo roteador() .get( “/:route”, (“setResponseHeader”) (“Cross-Origin-Resource-Policy”,> “Same-Origin”))

Cross-Origin Resource Policy é um cabeçalho de resposta opt-in que pode proteger qualquer recurso; não há necessidade de navegadores para sniff tipos MIME. – Documentos MDN

Política de Embedder de Origem Transcruzada (COEP)

O cabeçalho COEP impede o carregamento de recursos de origem cruzada para os quais não foi concedida permissão (via CORS ou CORP ). Use ‘Require-Corp’ para aplicar o cabeçalho, enquanto ‘Unsafe-none’ para permitir a busca de documentos de origem cruzada.

O novo roteador() .get( “/:route”, (“setResponseHeader”) (“Cross-Origin-Embedder-Policy”, “Require> -corp”)

Política de abertura de origem cruzada (COOP)

A imposição de cabeçalho COOP garante que o grupo de contexto de navegação de um documento de nível superior não seja compartilhado entre documentos de origem cruzada. Embora a “mesma origem” quebre as integrações que exigem interações entre janelas de origem, como OAuth e pagamento, a “mesma origem-permitir-popups” visa compartilhar o contexto apenas com os pop-ups do SAMEORIGIN.

O novo roteador() .get(“/:route”, (“setResponseHeader”) (“Cross-Origin-Opener-Policy”, “Same-> Origin-allow-popups”))

Política de referência

Quando um usuário navega (clicando em um link) de um site (a origem) para outro (o destino), este último recebe informações sobre a origem da qual o usuário veio. O cabeçalho da Política de Referrer controla a quantidade dessas informações que devem estar disponíveis para o destino. Para todas as diretivas da Diretiva de Referrer, consulte Diretiva de Referrer – HTTP | MDN (mozilla.org).

O novo Router() .get(“/”, (“setResponseHeader”) , (“setResponseHeader”), (“Referrer-Policy”, “Origin-when-cross-origin”), é um novo roteador> .

Política de permissões

Um cabeçalho HTTP experimental que fornece a capacidade de permitir/negar recursos do navegador em seus próprios quadros e em qualquer iframe no documento. Para todas as diretivas da Diretiva de Referrer, consulte Diretiva de Recursos – HTTP | MDN (mozilla.org)

O novo Router() .get(“/”, (“setResponseHeader”) , (“setResponseHeader”), “Permissions-Policy”,> “câmera(), microfone(), geolocalização

Segurança de transporte restrito HTTP (HSTS)

Cabeçalho de segurança de transporte restrito HSTS

HTTP Strict-Transport-Security (HSTS) informa os navegadores para carregar o site apenas usando HTTPS, em vez de usar o protocolo HTTP.

O novo roteador() .get(“/:route”, (“setResponseHeader”), (“setResponseHeader”), (“strict-> Transport-Security”, “max-age 31536000; includeSubDomains”))

HSTS dá-lhe a capacidade de:

  1. Proteger contra ataques de downgrade HTTP (ataques de decapagem SSL)
  2. A defesa de conteúdo misto muda para HTTPS por padrão

Um exemplo

Com Layer0, é mais fácil do que nunca implementar cabeçalhos de segurança. Usando o EdgeJS do Layer0, você pode adicionar cabeçalhos de segurança a qualquer site, independentemente da estrutura que está sendo usada. O seguinte busca implementar os cabeçalhos de segurança relevantes em um site construído com sapper via Layer0.

Exemplo : https://rishi-raj-jain-security-headers-example-default.layer0-limelight.link
GitHub: rishi-raj-jain/security-headers-example
Relatório: Link de relatório de cabeçalhos de segurança

Discussão

Vá em frente e adicione cabeçalhos de segurança relevantes para proteger seu aplicativo web! Com Layer0 você pode fazer ainda mais do que isso, segredos, envenenamento de cache e habilitação de autenticação básica no Edgio Documentation –Security .