1.0 O que é Header HTTP?
Quando há uma comunicação entre o servidor e o cliente, ambos trocam mensagens, e estas mensagens são, na verdade, chamadas de “pacotes”. Estes pacotes contêm diversas informações, sendo uma delas os “headers”, responsáveis por determinar como irá ser realizado esta comunicação. Através deles podemos implementar medidas de segurança de uma maneira simples, porém eficiente.
A configuração dos headers que implementam essa segurança são aqueles que trazem a resposta da requisição HTTP.
2.0 Tipos de Header
2.1 Referrer-Policy
Serve para controlar a quantidade de informações de referência deve ser incluída nas requisições.
origin | Envia apenas a referência original para a requisição. Ex: google.com/page1.html – vai enviar: google.com/
2.2 Header X-Content-Type-Options
Possibilita evitar que os navegadores interpretem o conteúdo da página, como no caso em que é feito o upload de um arquivo de texto com um código Javascript e o navegador o executa.
nosniff | Informa que ele não deve analisar e interpretar o conteúdo
X-Content-Type-Options: nosniff;
2.3 Header HTTP Strict-Transport-Security;
Permite obrigar a utilizar o protocolo SSL/TLS. Faz com que a página só aceite conteúdo com o certificado SSL/TLS. Com essa aplicação, você evita ataques do tipo “Man in the Middle”, que é basicamente quando o atacante intercepta uma comunicação e consegue os dados através dela, sendo que muitas vezes a vítima não percebe que ocorreu.
max-age | Quanto tempo (segundos) o navegador se lembra que a aplicação é acessada apenas por HTTPS
includeSubDomains | Define os subdomínios que devem respeitar o header
Strict-Transport-Security: max-age=32500; includeSubDomains
2.4 Header X-Frame-Options
Serve para impedir que o navegador exiba um tipo de conteúdo. Funciona bem para evitar ataques Clickjacking, que é quando um invasor insere uma camada invisível no site para o usuário colocar suas credenciais a fim de fazer login, porém, na verdade, estão sendo transmitidas para o atacante.
sameorigin | Irá carregar somente conteúdo da mesma URL
deny | Não permite carregar nenhum objeto externo
X-Frame-Options: deny; sameorigin
3.0 Como Implementar Headers
3.1 Apache
Apache é um servidor de código aberto e altamente personalizável, tem uma estrutura baseada em módulos e é um dos mais utilizados até hoje.
Para implementar headers nele é bem simples:
- Abra o arquivo de configuração
sudo nano/etc/apache2/apache2.conf
- Insira os headers
Header set X-XSS-Protection “1; mode=block”
Header always set X-Frame-Options SAMEORIGIN
- Reinicie o servidor
systemctl restart apache2
3.2 NGINX
O Nginx é um servidor rápido, fácil de configurar e tem um baixo consumo de recursos, sendo muito utilizado por grandes empresas, como: IBM, Google, etc.
No NGINX, basta você ir até o diretório do seu servidor geralmente “etc/nginx”. Lá, você deve procurar um arquivo com o nome do seu domínio “.conf”;
Dentro da seção “server” do arquivo, você irá implementar os headers que deseja. Salve, feche o arquivo e reinicie o servidor (sudo system1 restar nginx).
Então:
- sudo nano/etc/nginx/nginx.conf
- (adiciona os headers que deseja)
add_header X-XSS-Protection “1; mode=block”;
add_header X-Frame-Options SAMEORIGIN;
…
- Salvar e fechar o arquivo
- Reiniciar o servidor
sudo service nginx restart
3.3 IIS
Internet Information Services é um servidor WEB feito pela Microsoft para seus sistemas operacionais e servidores, sendo sua primeira vez introduzida no Windows NT Server.
Para implementar os headers no IIS, basta seguir estes passos:
- Abra o Gerenciador de Serviços de Internet e selecione o site que você deseja implementar
- Vá em “HTTP Response Headers”
- Clique em “Add”
- Adicione os headers que deseja
X-XSS-Protection: name=X-XSS-Protection, value=1; mode=block.
X-Frame-Options: name=X-Frame-Options, value=SAMEORIGIN.
…
- Salve e feche o Gerenciador de Serviços de Internet.
4.0 Testes de domínios com headers
tesla.com
Possui apenas o “Permissions-Policy” e “Strict-Transport-Security” configurados.
pudim.com
Não possuiu nenhum header configurado.
Clique aqui para falar com a nossa equipe e saber mais sobre nosso trabalho.
Quer acompanhar mais conteúdos da Vantico? Clique aqui e siga-nos no LinkedIn.
5.0 Referências:
HTTP Security Response Headers Cheat Sheet | OWASP
OWASP Secure Headers Project | OWASP