Questão 2685047

Tecnologia da Informação · 2016

Questão

ID 2685047

Disciplina: Tecnologia da Informação

Assunto: Injeção SQL

Ano: 2016 Banca: PUC PR - Pontifícia Universidade Católica do Paraná Órgão: Rádio e Televisão Educativa do Paraná


O código-fonte a seguir utiliza-se da extensão PDO (PHP Data Objects) para acessar e consultar uma base de dados em MySQL.

<?php

try {

\$dbh = new PDO('mysql:host=localhost;dbname=sistema', 'root', '');

\$perfil = \$_GET['perfil'];

\$status = \$_GET['status'];

\$stmt = \$dbh->prepare("SELECT * FROM users WHERE perfil = ? AND status = ?");

\$stmt->bindParam(1, \$perfil, PDO::PARAM_INT);

\$stmt->bindParam(2, \$status, PDO::PARAM_STR);

\$stmt->execute();

foreach(\$stmt->fetchAll() as \$user) {

print_r(\$user);

}

} catch (PDOException \$e) {

die("Erro ao conectar: " . \$e->getMessage() . "<br/>");

}

?>

Sobre as funcionalidades do PDO utilizadas, analise as afirmações a seguir:

I. A utilização do método prepare() inviabiliza ataques via SQL Injection à consulta definida.

II. O comando \$stmt->execute() poderia ser substituído por \$stmt->query().

III. É possível utilizar também a interface procedural do PDO e não apenas a interface orientada a objetos.

IV. Para conectar a uma base de dados diferente do MySQL, basta alterar o DSN passado para o construtor da classe PDO.

É CORRETO o que se afirma em:

Alternativas da questão 2685047
Pular para o conteúdo principal