Considerando o trecho de programa PHP apresentado acima, jul...
}
}
elseif ($react =="add_user") {
if (($user) and ($pass)) {
$query = “INSERT into login VALUES (“;
$query .= "0, SYSDATE( ),'$username','$password' )";
mysql_query($query, $mysql_link);
} else {
print(“<strong>either your user or password field
was left blank</strong><p>") ;
}
} else {
print("<center>Administration Area - Choose your
option</center>");
}
</script>
Não há crítica aos dados providos pelo usuário.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - certo
O trecho de código PHP apresentado na questão envolve operações de manipulação de um banco de dados, mais especificamente a adição e remoção de usuários. O enunciado afirma que não há crítica aos dados providos pelo usuário, o que, ao analisar o código, constatamos ser verdadeiro.
No código, a variável $react é usada para decidir entre a remoção de um usuário (delete_user) ou a adição de um novo usuário (add_user). Nenhuma dessas operações inclui uma etapa de validação ou sanitização dos dados do usuário antes de serem usados nas consultas SQL. As variáveis $user e $pass são inseridas diretamente nas consultas, o que representa uma falha de segurança e pode levar a ataques de injeção de SQL.
No bloco de código referente à remoção de usuários, a instrução SQL é formada concatenando diretamente o conteúdo da variável $user na consulta. Além disso, após a execução da consulta, o código verifica se alguma linha foi afetada usando mysql_num_rows, o que é inadequado já que o comando DELETE não retorna um conjunto de resultados.
Para a adição de usuários, embora sejam feitas verificações para saber se as variáveis $user e $pass estão vazias, não é feita nenhuma validação do conteúdo dessas variáveis, o que também pode levar à injeção de SQL.
Por fim, é importante observar que o código utiliza funções mysql_*, que estão obsoletas e foram removidas nas versões mais recentes do PHP. Em contextos reais, a recomendação seria utilizar as extensões MySQLi ou PDO, que oferecem recursos de preparação de consultas que podem prevenir injeções de SQL.
Concluindo, a alternativa C está correta ao afirmar que o código não realiza crítica aos dados providos pelo usuário, representando uma vulnerabilidade no tratamento de informações sensíveis.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
crítica para evitar um sql injection
ou seja
sanitizar as entradas
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo