Ao utilizar o PHP Data Objects (PDO) para interação com um ...

Próximas questões
Com base no mesmo assunto
Q2447161 Programação
Ao utilizar o PHP Data Objects (PDO) para interação com um banco de dados MySQL, qual prática é recomendada para prevenir SQL Injection?
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: A - Utilização de prepared statements com placeholders para parâmetros.

Quando lidamos com bancos de dados em aplicações web, uma prática crucial para garantir a segurança é a prevenção de SQL Injection. Essa técnica maliciosa pode comprometer seriamente a integridade e segurança dos dados. A questão aborda a utilização do PHP Data Objects (PDO) para interação com um banco de dados MySQL, focando na prática recomendada para evitar SQL Injection.

Explicação da Alternativa Correta: A utilização de prepared statements com placeholders é a abordagem recomendada e mais eficaz para prevenir SQL Injection. Ao utilizar prepared statements, a consulta SQL é pré-compilada no banco de dados, e os parâmetros são vinculados posteriormente. Isso garante que os dados fornecidos pelo usuário não possam alterar a estrutura da consulta SQL, evitando a possibilidade de injeção de código malicioso.

Para ilustrar, veja um exemplo de prepared statement em PHP:


<?php
  $stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
  $stmt->bindParam(':username', $username);
  $stmt->execute();
?>

Nesse exemplo, a consulta é preparada com um placeholder :username, e o valor real é vinculado com bindParam, protegendo contra SQL Injection.

Alternativas Incorretas:

B - Uso de variáveis globais PHP dentro de consultas SQL. Esta prática é perigosa porque as variáveis globais podem ser manipuladas por usuários mal-intencionados, facilitando a injeção de código SQL. Não há qualquer forma de validação ou tratamento seguro dos dados.

C - Concatenação direta de variáveis na string de consulta SQL. Concatenar variáveis diretamente na string da consulta é uma das maneiras mais inseguras de construir consultas SQL. Se os dados fornecidos pelo usuário não forem devidamente escapados, a consulta pode ser manipulada, resultando em SQL Injection.

D - Execução direta de consultas SQL recebidas através de entradas do usuário. Executar consultas SQL diretamente com dados recebidos do usuário é extremamente inseguro. Sem qualquer forma de validação ou sanitização, essa prática torna a aplicação vulnerável a ataques de SQL Injection, permitindo que um invasor execute comandos arbitrários no banco de dados.

Em resumo, a alternativa A é a prática recomendada, pois o uso de prepared statements com placeholders oferece uma camada de proteção contra SQL Injection, garantindo que os dados dos usuários não comprometam a segurança da aplicação.

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

Prepared statements are very useful against SQL injections.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo