Pular para conteúdo

Aula 13 - Proteções para Aplicações Web 🛡️

Objetivo

Objetivo: Aprender as defesas práticas contra XSS, CSRF e outras vulnerabilidades comuns, e conhecer os cabeçalhos HTTP de segurança que toda aplicação web moderna deveria usar.


1. XSS (Cross-Site Scripting): a Defesa 🖼️

Ocorre quando dados fornecidos pelo usuário são exibidos na página sem escapar caracteres especiais de HTML, permitindo injetar scripts.

<!-- Comentário de usuário exibido sem tratamento -->
<div>Comentário: <script>roubarCookies()</script></div>

Regra de ouro contra XSS

Nunca confie em dados do usuário. Sempre escape (ou use frameworks que escapam automaticamente, como React/Vue) qualquer conteúdo dinâmico antes de renderizá-lo como HTML.


2. CSRF (Cross-Site Request Forgery) 🎭

Um ataque que engana o navegador da vítima para que ele envie uma requisição indesejada a um site onde ela já está autenticada — sem que ela perceba.

Defesas principais: 1. Token CSRF: um valor único, verificado a cada requisição que altera dados. 2. Cookies SameSite: impedem que o cookie de sessão seja enviado em requisições vindas de outros domínios.


3. Cabeçalhos HTTP de Segurança 📋

Cabeçalho O que faz
Content-Security-Policy Restringe de onde scripts/estilos podem ser carregados, mitigando XSS
X-Content-Type-Options: nosniff Impede o navegador de "adivinhar" o tipo de arquivo, evitando alguns ataques
X-Frame-Options: DENY Impede que o site seja carregado dentro de um <iframe> (proteção contra clickjacking)
Strict-Transport-Security Força o navegador a sempre usar HTTPS para aquele domínio
$ # Verificando os cabecalhos de seguranca de uma aplicacao $ curl -sI https://example.com | grep -Ei "x-content-type|x-frame|content-security" $ X-Content-Type-Options: nosniff $ X-Frame-Options: DENY $ Content-Security-Policy: default-src 'self'

4. Segurança em Dependências 📦

Boa parte das vulnerabilidades reais não está no código próprio — está nas bibliotecas de terceiros usadas pelo projeto (categoria "Vulnerable Components" do OWASP Top 10).

$ pip install pip-audit $ pip-audit $ Found 2 known vulnerabilities in 1 package

Ferramentas como pip-audit, npm audit e o Dependabot do GitHub automatizam essa verificação continuamente.


5. Validação de Entrada: a Primeira Linha de Defesa 🚧

A maioria das vulnerabilidades deste módulo (SQL Injection, XSS, e outras) compartilha uma raiz comum: confiar em dados do usuário sem validar. Validar tipo, tamanho e formato de toda entrada, no backend (nunca só no frontend), é a defesa mais barata e eficaz.


6. Mini-Projeto: Auditoria de Cabeçalhos 🚀

  1. Escolha 3 sites que você usa no dia a dia.
  2. Para cada um, rode curl -sI <site> e verifique quais cabeçalhos de segurança da tabela da seção 3 estão presentes.
  3. Monte uma tabela comparativa: qual site está mais bem protegido?
  4. Para o site com menos cabeçalhos, sugira quais ele deveria adicionar.

7. Exercício de Fixação 🧠

  1. Explique com suas palavras como funciona um ataque CSRF.
  2. Para que serve o cabeçalho Content-Security-Policy?
  3. Por que dependências desatualizadas são consideradas um risco, mesmo que seu código próprio esteja correto?

Próxima Aula: Fim do Módulo 4! A segurança encontra a legislação: LGPD e Privacidade 📜