Injeção é um tipo de falha comum no desenvolvimento de aplicações web e que resulta em danos significativos, dependendo da falha e do nível de exposição dos dados. Uma aplicação é considerada vulnerável a um ataque de injeção quando
- A)existir o controle do menor privilégio possível.
Errada, porque o princípio do menor privilégio ajuda a reduzir danos, mas não caracteriza nem evita, por si só, uma falha de injeção.
- B)os dados inseridos por um usuário em um formulário não forem sanitizados ou filtrados antes de se passarem os parâmetros para um banco de dados.
Certa, porque entrada de usuário sem sanitização ou filtragem, usada diretamente em consulta ao banco, é o cenário típico de vulnerabilidade a injeção.
- C)houver uso de premissa criptográfica forte e com algoritmo confiável.
Errada, porque uso de criptografia forte trata proteção de dados, não a construção insegura de comandos a partir de entrada do usuário.
- D)fizer o controle de identificação de objetos de maneira a validar identificação única.
Errada, porque validação de identificação de objetos se relaciona mais a acesso a recursos e controle de autorização do que a injeção.
- E)Tokens de autenticação forem validados e rotacionados mediante um ciclo de vida bem definido.
Errada, porque validação e rotação de tokens dizem respeito a autenticação e sessão, não ao problema de injetar comandos ou consultas.
Gabarito: B
Injeção é uma falha clássica em aplicações web: ela acontece quando a aplicação recebe dados do usuário e os trata como parte do comando que será executado, em vez de enxergá-los apenas como dados. Aí mora o perigo. Se esse conteúdo não for tratado corretamente, o sistema pode montar consultas, comandos ou expressões perigosas, abrindo espaço para acesso indevido, alteração de dados ou até execução de ações não autorizadas. Na prática, o cenário mais comum é o banco de dados. Se um campo de formulário recebe entrada do usuário e essa entrada vai direto para a consulta sem sanitização, filtragem ou uso seguro de parâmetros, a aplicação fica vulnerável a SQL injection. O atacante aproveita justamente essa confiança exagerada do sistema no que foi digitado. Por isso o gabarito é a letra B: quando os dados inseridos em um formulário não são sanitizados ou filtrados antes de serem usados como parâmetros para o banco de dados, a aplicação está exposta a ataque de injeção. A boa prática é usar consultas parametrizadas/prepared statements e validação de entrada, como recomenda o OWASP Top 10 no item Injection. As demais alternativas falam de controles de segurança importantes, mas de outros temas: menor privilégio, criptografia, identificação de objetos e ciclo de vida de tokens. São boas medidas, só que não respondem ao conceito de injeção.