Ao utilizar o PHP Data Objects (PDO) para interação com um ...
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