Segurança de Browsers e Web
Esta aula aborda a segurança de navegadores e web, explicando conceitos fundamentais como same-origin policy, Content Security Policy (CSP), cookies, e as vulnerabilidades XSS e CSRF. O objetivo é capacitar o aluno a entender e mitigar riscos comuns em aplicações web.
Nesta aula, vamos explorar os mecanismos de segurança que protegem os usuários e as aplicações web contra ataques maliciosos. A segurança de browsers e web é um campo crítico, pois grande parte das interações digitais ocorre através de navegadores. Compreender conceitos como same-origin policy, CSP, cookies e as vulnerabilidades XSS e CSRF é essencial para qualquer profissional de segurança da informação.
Vamos começar com a política de mesma origem, que é a base do modelo de segurança dos navegadores, e depois avançar para mecanismos de defesa como CSP e práticas seguras com cookies. Por fim, analisaremos ataques comuns e como preveni-los.
Same-origin policy
A same-origin policy (política de mesma origem) é uma medida de segurança crítica implementada por navegadores. Ela restringe como um documento ou script carregado de uma origem pode interagir com recursos de outra origem. Uma origem é definida pela combinação de protocolo, domínio e porta.
Por exemplo, uma página em https://site.com não pode ler o conteúdo de uma página em https://outro.com devido a essa política. Isso impede que scripts maliciosos acessem dados sensíveis de outros sites. No entanto, há exceções controladas, como o uso de CORS (Cross-Origin Resource Sharing) e JSONP.
Origem A: https://exemplo.com:443/pagina.html
Origem B: https://exemplo.com:8080/outro.html -> DIFERENTE (porta)
Origem C: http://exemplo.com/pagina.html -> DIFERENTE (protocolo)Entender a same-origin policy é fundamental para compreender como ataques como XSS e CSRF exploram violações dessa política.
CSP
Content Security Policy (CSP) é uma camada adicional de segurança que ajuda a detectar e mitigar ataques como XSS e injeção de dados. O CSP permite que desenvolvedores definam quais fontes de conteúdo são confiáveis, restringindo a execução de scripts não autorizados.
O CSP é implementado através do cabeçalho HTTP Content-Security-Policy ou da tag <meta>. Por exemplo, uma política pode permitir apenas scripts do próprio domínio e bloquear scripts inline.
Content-Security-Policy: default-src 'self'; script-src 'self' https://apis.google.comIsso impede que um atacante injete scripts maliciosos, pois o navegador bloqueará qualquer script que não esteja na lista de permissões. CSP também oferece diretivas para estilos, imagens, fontes, etc.
Cookies
Cookies são pequenos arquivos armazenados no navegador do usuário, usados para manter estado, como sessões de login. No entanto, cookies podem ser alvos de ataques se não forem configurados corretamente. Atributos de segurança como Secure, HttpOnly e SameSite são cruciais.
- Secure: o cookie só é enviado em conexões HTTPS.
- HttpOnly: impede que o cookie seja acessado por JavaScript, mitigando XSS.
- SameSite: controla o envio do cookie em requisições cross-site, prevenindo CSRF.
Set-Cookie: sessionId=abc123; Secure; HttpOnly; SameSite=LaxO atributo SameSite pode ser Strict, Lax ou None. Strict não envia o cookie em requisições iniciadas por sites terceiros, enquanto Lax permite em navegação top-level (como clicar em um link).
XSS e CSRF
XSS (Cross-Site Scripting) é uma vulnerabilidade que permite a um atacante injetar scripts maliciosos em páginas web visualizadas por outros usuários. Existem três tipos: armazenado, refletido e DOM-based. A prevenção inclui validação e sanitização de entradas, uso de CSP e escape de saída.
CSRF (Cross-Site Request Forgery) força um usuário autenticado a executar ações indesejadas em uma aplicação web. Por exemplo, um atacante pode criar um link que, quando clicado por um usuário logado, transfere dinheiro. A prevenção envolve tokens anti-CSRF, cookies com SameSite e verificação de cabeçalhos de origem.
// Exemplo de token CSRF em formulário
<input type="hidden" name="csrf_token" value="token_unico" />Ambas as vulnerabilidades são comuns e podem ser mitigadas com boas práticas de desenvolvimento e configurações de segurança.
Boas práticas
- Implemente CSP rigoroso e teste com relatórios.
- Configure cookies com Secure, HttpOnly e SameSite.
- Use tokens CSRF em formulários e requisições sensíveis.
- Valide e sanitize sempre as entradas do usuário.
- Mantenha bibliotecas e frameworks atualizados.
Exercícios
- Explique como a same-origin policy impede um ataque XSS simples.
- Qual a diferença entre CSP e same-origin policy?
- Por que o atributo HttpOnly é importante para cookies?
- Como um token CSRF previne ataques?
- Cite três medidas para mitigar XSS.