Considerando o trecho de programa PHP apresentado acima, jul...

Próximas questões
Com base no mesmo assunto
Q268146 Programação
<script language=“php">
if($react == “delete_user") {
if($user) {
$query = “DELETE from login WHERE user='$user'";
$result = mysql_query($query, $mysql_link);
if(mysql_num_rows($result)) {
print(“<strong>$user</strong> successfully
deleted<p>");
}
} else {
print(“<strong>no users are available to delete
.</strong><p>");

}

}

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>



 

Considerando o trecho de programa PHP apresentado acima, julgue o item subsequente.

Não há crítica aos dados providos pelo usuário.
Alternativas

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

Acredito que crítica tenha o mesmo sentido de tratamento da variável atribuída pelo usuário. Nesse caso a questão está correta, pois não há nenhum tratamento na variável de entrada.

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