SQL Injection e Ausência de Práticas de Programação Segura
Gabarito: letra E. O código apresentado é vulnerável a SQL injection, pois concatena diretamente a entrada do usuário ($_GET['id']) na consulta SQL. Nenhuma das técnicas de programação segura listadas (I a IV) foi implementada. Todas as assertivas estão INCORRETAS.
Análise das assertivas
Item I — ❌ Incorreto
Vulnerabilidade e dependência de pacotes externos. O código utiliza a extensão mysql_* (depreciada e insegura), considerada uma dependência de pacote externo vulnerável. Além disso, a própria injeção SQL configura uma vulnerabilidade. A técnica de evitar dependência de pacotes inseguros e mitigar vulnerabilidades não foi aplicada, pois o código emprega uma extensão obsoleta e não trata a entrada. Portanto, o item I está incorreto.
Item II — ❌ Incorreto
Autenticação segura. Não há qualquer mecanismo de autenticação no trecho exibido. O código simplesmente recebe um parâmetro id via GET e executa a consulta. Práticas como uso de sessões, tokens, hash de senhas ou MFA estão totalmente ausentes. Logo, a técnica de autenticação segura não foi implementada.
Item III — ❌ Incorreto
Higienização das entradas de dados. A variável $_GET['id'] é utilizada diretamente na string SQL, sem qualquer sanitização, escape ou validação. A técnica de higienização de entradas — que inclui uso de prepared statements, filtragem de tipos ou escapes — não foi aplicada. Isso é a causa direta da vulnerabilidade de SQL injection.
Item IV — ❌ Incorreto
Princípio do menor privilégio. Considerando que o código provavelmente se conecta ao banco de dados com credenciais de alto privilégio (já que não há limitação explícita), a técnica de conceder apenas os privilégios mínimos necessários não foi implementada. Em ambientes seguros, a conta do banco deveria ter permissões restritas apenas ao que a aplicação precisa.
Conclusão
Todas as assertivas (I, II, III e IV) estão incorretas, pois nenhuma das técnicas de programação segura foi empregada. A alternativa que contempla todas elas é a letra E.
Gabarito: letra E