Alternativa E
A afirmação apresentada na questão é falsa e perigosa do ponto de vista da segurança da informação. Em sistemas de arquitetura cliente-servidor, a validação de entrada deve ocorrer em ambas as extremidades, mas a validação no lado do servidor é obrigatória e crítica.
Análise Detalhada
O Problema da Validação Apenas no Cliente
Muitas vezes, realizamos validações no lado do cliente (navegador, aplicativo móvel) para melhorar a experiência do usuário (UX) e reduzir a carga desnecessária no servidor. No entanto, confiar exclusivamente nisso é uma falha grave de segurança.
- Controle do Usuário: O código do lado do cliente roda no computador ou dispositivo do usuário. Um atacante pode modificar esse código, desabilitar scripts ou usar ferramentas de interceptação (como proxies).
- Insegurança por Definição: Não se pode assumir que o cliente enviará dados corretos. A regra de ouro é: "Nunca confie no cliente" (Never trust the client).
Por que a Opção E é a Correta?
A alternativa E identifica corretamente o risco principal ao ignorar a validação no servidor.
- Risco de Bypass: Se a validação existe apenas no cliente, um invasor pode enviar dados maliciosos diretamente para o servidor, pulando completamente as verificações do navegador ou app.
- Exemplos de Ataques: Sem validação no servidor, vulnerabilidades como Injeção de SQL, XSS (Cross-Site Scripting) e envio de arquivos maliciosos tornam-se possíveis.
- Segurança em Camadas: A validação no servidor atua como a última linha de defesa (Defense in Depth), garantindo que mesmo que o cliente seja comprometido, o sistema permaneça seguro.
Comparativo das Alternativas
| Alternativa | Avaliação | Motivo |
|---|
| A | Incorreta | Sugere nunca validar no cliente, o que é ruim para usabilidade, mas não justifica a necessidade do servidor. |
| B | Incorreta | Foca em "recursos", quando o problema é a confiança e a integridade dos dados. |
| C | Incorreta | Afirma que toda validação deve ser no cliente, o que é um erro de segurança fatal. |
| D | Incorreta | Argumenta sobre custo computacional, ignorando a prioridade da segurança. |
| E | Correta | Explica que dados maliciosos podem contornar as defesas do cliente se não houver proteção no servidor. |
Conclusão
Em desenvolvimento seguro (Secure Coding), a validação no servidor é indispensável. Ela garante a integridade e a segurança dos dados antes que sejam processados ou armazenados no banco de dados. Portanto, a afirmação de que não devemos validar no servidor está errada justamente porque isso permitiria a entrada de dados maliciosos não detectados pelo cliente.