Resumo Rápido (TL;DR)
XSS e SQL Injection são classes de vulnerabilidade que podem surgir quando uma aplicação trata entradas ou consultas de forma insegura. Validação, codificação de saída, consultas parametrizadas, controle de acesso, atualizações e monitoramento ajudam a reduzir riscos, mas nenhuma medida isolada elimina todas as possibilidades de incidente.
Sites institucionais também podem conter formulários, áreas administrativas, integrações e serviços que processam dados. O risco depende da tecnologia usada, da configuração, do tipo de informação recebida, dos acessos concedidos e da manutenção realizada.
A proteção começa por entender onde dados entram, como são tratados, onde são armazenados e quem pode acessá-los. A análise deve evitar alarmismo e considerar o escopo real da aplicação.
Como XSS e SQL Injection funcionam
Entradas não confiáveis
São dados recebidos de usuários, navegadores, integrações ou outras fontes que a aplicação não deve tratar como código ou instrução confiável. Eles precisam ser validados conforme o contexto e processados por mecanismos apropriados.
- SQL Injection: pode ocorrer quando valores recebidos pela aplicação são concatenados diretamente em comandos de banco de dados. Consultas parametrizadas e permissões restritas ajudam a separar dados de instruções.
- XSS: pode ocorrer quando conteúdo controlado por terceiros chega ao navegador sem a codificação ou política adequada ao contexto de saída. Codificação, sanitização quando necessária e políticas como CSP podem reduzir a exposição.
A gravidade depende da vulnerabilidade específica, da conta afetada, dos dados disponíveis e das barreiras existentes. Não é correto afirmar que todo formulário vulnerável permite acessar ou apagar qualquer informação.
Práticas para reduzir riscos
Mapear entradas e saídas
Liste formulários, parâmetros, uploads, mensagens e componentes que recebem ou exibem dados externos.
Validar conforme o contexto
Use regras de formato, tamanho e tipo quando apropriadas, sem tratar validação no navegador como única barreira.
Parametrizar consultas
Use APIs ou consultas preparadas para separar valores recebidos de instruções de banco de dados e limite permissões da aplicação.
Codificar saídas e controlar scripts
Aplique codificação adequada ao contexto de saída e avalie uma política de segurança de conteúdo compatível com a aplicação.
Atualizar e monitorar
Mantenha dependências, servidor e bibliotecas acompanhados, registre eventos relevantes e defina como investigar e corrigir incidentes.
Segurança de entrada de dados é uma prática contínua. O objetivo é reduzir superfícies de ataque, limitar impactos e melhorar a capacidade de identificar e corrigir problemas.
O que cada medida ajuda a fazer
| Medida | Contribuição possível | Limite importante |
|---|---|---|
| Validação | Rejeitar formatos inesperados e reduzir dados fora do escopo | Não substitui controles no servidor nem tratamento correto na saída |
| Consultas parametrizadas | Separar valores de instruções SQL | Não corrige outros problemas de autenticação, autorização ou lógica |
| Codificação de saída | Evitar que texto seja interpretado como marcação ou script no contexto previsto | Precisa ser adequada ao local em que o conteúdo é inserido |
| CSP | Restringir origens e formas de execução de scripts conforme a política definida | Configuração inadequada pode quebrar recursos e não substitui correções no código |
| WAF | Filtrar determinados padrões de tráfego e adicionar uma camada de observação | Não corrige a vulnerabilidade na aplicação nem deve ser a única defesa |