Segurança? Pra Que Facilitar se Podemos Complicar?
Ah, segurança em TI... A gente queria um mundo onde nada quebra. Mas voltando ao mundo real, garantir a segurança de um app é de arrancar os cabelos. Mas, não tema, temos os maravilhosos HTTP Security Headers para nos ajudar. Ou pelo menos tentar ajudar.
Então, pessoal, um guia básico de como não deixar seu site virar festa para hackers.
Same Origin Policy
Ah, a política da mesma origem! A ideia de que o site http://site-confiavel.com.br
é seguro e não será invadido por http://outro-site.com.br
. Na prática, é diferente. Hackers não se comovem com teoria.
XSS, por exemplo, é o vilão que ignora regras como a Same-Origin Policy. Quer mais detalhes sobre o perigo? Dá uma olhada na Owasp XSS Filter Evasion Cheat Sheet.
Security Headers
Para dormir um pouco mais tranquilo, os HTTP Security Headers ajudam muito. Implementar é simples como comprar pão, mas com benefícios maiores.
Eles funcionam como uma armadura pro seu site, protegendo contra XSS, injeção de código, clickjacking, entre outros riscos. Quando alguém visita seu site, o navegador segue as regras desses headers, trazendo ordem ao caos.
Cross Site Scripting Protection (X-XSS)
Este é um truque para navegadores, que, convenhamos, são facilmente enganados. Incluir o header X-XSS-Protection
é tipo dizer: "Se vir algo errado, ignora!"
Tabela de X-XSS-Protection:
Valor | Descrição |
---|---|
0 | Desativar o filtro de XSS. Para os corajosos. |
1 | Vigia como uma mãe: só permitir o que é limpo. |
1; mode=block | Bloqueia qualquer coisa suspeita em vez de modificar à vontade. |
Content Security Policy (CSP)
Sim, o CSP ou "Como Deixar Seu Navegador Sob Controle". Dá pra melhorar o X-XSS-Protection com isso. Com o CSP, você limita quais recursos o site pode carregar.
A maioria dos navegadores aceita isso tranquilamente. Se precisar de detalhes, sempre há mais um artigo por aí.
HTTP Strict Transport Security (HSTS)
Regra de ouro do HTTPS: "Só vem por conexão segura". Ninguém quer navegação em áreas perigosas! O HSTS instrui: "Sempre venha de HTTPS e quero ver o cadeado!"
HSTS: O Guardião
Valor | Descrição |
---|---|
max-age= | Quanto tempo a regra segura deve ser lembrada pelo navegador. |
includeSubDomains (Opcional) | Estende a regra de segurança para os subdomínios. |
X-Frame-Options
Alguém mencionou clickjacking? Favorecido por quem gosta de pregar peças na web. Com x-frame-options
, você diz: isso aqui não está disponível.
Valor | Descrição |
---|---|
deny | Proibido para todos. |
sameorigin | Acesso apenas para sites conhecidos. |
allow-from | Só permitido para o amigo que trouxe café. |
X-Content-Type-Options
MIME Sniffing soa bonito, né? Mas quando o navegador não sabe diferenciar, essa função põe regras claras.
X-Content-Type-Options: nosniff
Defensores do tipo MIME original:
- "style" tem que ser "text/css"
- "script" deve ser JavaScript verdadeiro.
Implementação
Colocar esses truques no ASP.NET é mais fácil do que parece. Tente assim:
ASP.NET Core - startup.cs (onde tudo acontece)
Diretamente no web.config (para manter simples)
E tem outras formas, como a biblioteca NWebSec, ou via IIS, pra quem gosta de desafios.
Referências para Quem Quer Saber Mais:
E aí está! Primeiro, arruma esse código antes de pensar que só uns headers vão resolver tudo, beleza?