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.

Banner JPProjeto GitHub

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.

Response Header

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:

ValorDescrição
0Desativar o filtro de XSS. Para os corajosos.
1Vigia como uma mãe: só permitir o que é limpo.
1; mode=blockBloqueia 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.

CSP Browsers

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

ValorDescriçã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.

ValorDescrição
denyProibido para todos.
sameoriginAcesso apenas para sites conhecidos.
allow-fromSó 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?