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

Usando o 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 à medida que o número de violações e roubos de dados estão a aumentar rapidamente todos os dias. Os cabeçalhos de segurança oferecem uma parte fácil de implementar da solução: Basta passar cabeçalhos de HTTP específicos para proteger o seu website de 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 de violações ou vulnerabilidades do lado do cliente, conhecidas como cabeçalhos de segurança.

Quando um utilizador visita um website no seu navegador, o servidor responde com cabeçalhos de resposta de HTTP. Estes cabeçalhos, compostos por metadados, partilham informações com o cliente e o servidor. Esta informação partilhada define como os navegadores devem interagir com o website. Os cabeçalhos de segurança fornecem uma proteção poderosa contra várias vulnerabilidades e ameaças de aplicações web.

Este blog vai 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 Cruze (CORP)
  • Política de Embedder Transgénese (COEP)
  • Política de abertura de origens cruzadas (COOP)
  • Política de referência
  • Política de Permissões
  • Segurança de transporte restrito de HTTP (HSTS)

Importância dos cabeçalhos de segurança

Os cabeçalhos de segurança de HTTP são uma parte fundamental da segurança do website; no entanto, apenas 1,6% dos primeiros milhões de websites implementaram a Política de Segurança de Conteúdo (CSP) e apenas 2% dos sites implementaram 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 no 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 do cartão de 380 000 clientes foram expostos, que permaneceram sem serem detetados durante 15 dias.

Adicionando Segurança com o EdgJS de Layer0

Com a plataforma de implantação do Layer0, coisas como o TLS são automaticamente configuradas para cada link de implantação, para que os desenvolvedores possam enviar com segurança por padrão. Neste blog, olhamos atentamente para cabeçalhos de segurança importantes e um exemplo para mostrar a rapidez com que pode proteger um website 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 a CSP impede o carregamento de recursos de origens não permitidas

A política de segurança de conteúdo fornece uma camada adicional para impedir ataques de scripts entre sites (XSS) restringindo scripts, estilos, imagens, fontes e meios de comunicação de serem carregados (e executados) de origens permitidas específicas. Independentemente de quão seguro seja o seu back-end, se os maus atores puderem atacar o código que é 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 ao 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 durante 5 meses antes de ser apanhada! Tudo apenas injetando um script de skimming de formulário dentro do navegador.

Const ContentSecurityPolicy: Default-src ‘self’; script-src ‘sef”insegura-eval”insegura-inline’ *.layer0.co; style-src ‘sef”insegura-inline’ *.googleapis.com; img-src * blob: Data: .gstatic.com; media-src; ‘self-src; ‘none’; ‘src’; ‘src’; ‘none’; ‘src’ “novo router>() .get(“/:ROUTE”, (“setResponseHeader”), ContentSecurityPolicy.Replace(//n/g, “”))

A política de segurança de conteúdo dá-lhe a capacidade de:

  1. Supere ataques XSS (Cross Site Scripting)
  2. Impedir o clique de macaco
  3. Denunciar violações às regras da CSP

X-Content-Type-Options

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

O cabeçalho X-Content-Type-Options indica que os tipos de MIME (Multipurpose Internet Mail Extensions, um identificador para formatos de ficheiro) especificados nos cabeçalhos do Content-Type devem ser rigorosamente seguidos. Com o sniffing do tipo MIME , 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 router() .get(“/:route”, (“setResponseHeader”), (“setResponseHeader”), (“X-Content-Type-Options”, “noss”))

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 frame, iframe, embed ou tag de objeto para evitar Ataques de clique-jacking. Quer seja definido como NEY ou o SAMEORIGIN garante que o seu conteúdo não está incorporado noutros sites ou apenas incorporado em sites com a mesma origem, respetivamente. ‍

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

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

  1. Prevenir ataques de clickjacking
  2. Indicar se um navegador deve ou não ser autorizado a renderizar uma página em A. <estrutura>, <iframe>, <incorporar> ou <objecto>

Política de Recursos de Origem Cruze (CORP)

A Corp permite que os servidores se protejam contra certas origens cruzadas ou incorporação entre sites do recurso solicitado (por exemplo, respostas da API). Também previne ataques especulativos de canal lateral como Specter .

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

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

Política de Embedder Transgénese (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 impor o cabeçalho, enquanto ‘insegura-none’ para permitir a busca de documentos de origem cruzada.

>Entre em contacto com o router”. Get(“/:ROUTE”, (“setResponseHeader”), “”Cross-Origin-Embedder-Policy”, “”Require-corp””)

Política de abertura de origens cruzadas (COOP)

A aplicação do cabeçalho COOP garante que o grupo de contexto de navegação de um documento de nível superior não seja partilhado entre documentos de origem cruzada. Enquanto a ‘mesma origem’ quebra as integrações que exigem interações entre janelas de origem, como OAuth e pagamento, ‘mesma origem-permitir-pop-ups’ visa compartilhar o contexto apenas com os pop-ups do SAMEORIGIN.

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

Política de referência

Quando um utilizador navega (clicando num link) de um site (a origem) para outro (o destino), este último recebe informações sobre a origem de onde o utilizador veio. O cabeçalho da Política de Referrer controla quanta dessas informações estarão disponíveis para o destino. Para todas as diretivas da Referrer-Policy, consulte Referrer-Policy – HTTP | MDN (mozilla.org).

“O novo router() .get(“/”, (“setResponseHeader”>), (“setResponseHeader”) (“Referrer-Policy”, “Origin-when-cross-origin”))

Política de Permissões

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

>”O novo router() .get(“/”, (“setResponseHeader”), “”setResponseHeader”””, “”Permissões-Policy”””, “”Câmera””, “

Segurança de transporte restrito de HTTP (HSTS)

Cabeçalho de segurança de transporte restrito HSTS

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

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

HSTS dá-lhe a capacidade de:

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

Um exemplo

Com o Layer0, é mais fácil do que nunca implementar cabeçalhos de segurança. Usando o EdgedJS do Layer0, você pode adicionar cabeçalhos de segurança a qualquer site, independentemente do framework que está sendo usado. O seguinte procura implementar os cabeçalhos de segurança relevantes num website construído com o 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 a sua aplicação web! Com Layer0 pode fazer ainda mais do que isto, segredos, envenenamento de cache e habilitação de autenticação básica em Edgio Documentation – Security .