Banco de dúvidas

Habilitando os cabeçalhos de resposta de segurança (SRH)

Os cabeçalhos de resposta de segurança (Security Response Headers) são elementos cruciais para melhorar a segurança e proteção de um site ou aplicativo da web. Eles são enviados pelo servidor web como parte da resposta HTTP para o navegador do usuário e ajudam a definir políticas de segurança que o navegador deve seguir ao interagir com o site. Essas políticas podem mitigar diversos tipos de ataques, como ataques de injeção de código, roubo de informações sensíveis ou redirecionamentos maliciosos.

Um exemplo é o cabeçalho "Content-Security-Policy" (CSP), que permite aos desenvolvedores especificarem de quais origens o navegador pode carregar recursos, como scripts, estilos e imagens. Com isso, é possível evitar ataques de Cross-Site Scripting (XSS) e reduzir a superfície de ataque.

Outro cabeçalho é o "X-Frame-Options", que controla se o site pode ser exibido em um frame ou iframe de outro domínio. Essa medida protege contra ataques de Clickjacking, em que um site malicioso tenta enganar o usuário para clicar em elementos invisíveis em um site legítimo.

O cabeçalho "Strict-Transport-Security" (HSTS) força o navegador a sempre se conectar ao site usando HTTPS, mesmo que o usuário insira "http://" na URL. Isso evita ataques de interceptação de dados e "man-in-the-middle" em redes não seguras.

O "X-Content-Type-Options" é outro cabeçalho que impede o navegador de interpretar arquivos de forma insegura, prevenindo ataques de tipo MIME sniffing.

E o cabeçalho "Referrer-Policy" controla quais informações de referência são enviadas ao acessar um link. Isso pode proteger informações sensíveis que podem estar presentes no cabeçalho "Referer".

Como habilitar

Para ativar os cabeçalhos de resposta de segurança, basta modificar o arquivo .htaccess no pasta raiz do seu site. Abaixo estão as diretrizes para implementar essas medidas de segurança.

Strict-Transport-Security

Adicione a seguinte linha ao seu arquivo .htaccess:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" env=HTTPS

Isso informará aos browsers para acessar seu site apenas por meio de HTTPS. O valor max-age=31536000 especifica que essa regra deve ser lembrada por um ano. O atributo includeSubDomains significa que essa política também se aplica a todos os subdomínios.

NOTA: uma vez que o HSTS for ativado, não pode ser desativado pelo cliente, portanto, certifique-se de que está pronto para fazer esse compromisso antes de ativá-lo, ou experimente primeiro valores menores como 600 (10 minutos) para o max-age.

Proteção contra XSS

Para se proteger de ataques de Cross Site Scripting (XSS), acrescente o seguinte no .htaccess:

Header set X-XSS-Protection "1; mode=block"

Proteção contra Clickjacking

Header always append X-Frame-Options SAMEORIGIN

Proteção contra MIME sniffing

Para garantir que sempre seja usado o tipo de conteúdo declarado, acrescente:

Header set X-Content-Type-Options nosniff

Uma medida adicional é impedir a execução de scripts fora do domínio, acrescente:

Header set Content-Security-Policy "default-src 'self'"

CUIDADO! A limitação habilitada pelo cabeçalho Content-Security-Policy pode ser bastante restritiva e causar problemas no seu site. Experimente primeiro e remova caso observe falhas em seu funcionamento.

Depois dessas alterações, salve e feche o arquivo .htaccess.

Conclusão

O uso dos cabeçalhos de resposta de segurança em seu site são práticas recomendadas para melhorar a segurança do seu site. Embora possa parecer complexo à primeira vista, o processo é bastante direto quando você entende os conceitos básicos. Com apenas algumas linhas de código, você estará dando um grande passo para tornar seu site muito mais seguro.

Este artigo foi útil para você?