Declarações preparadas do MySQL: além do escape
Embora o escape manual seja uma abordagem comum para proteção contra injeção de SQL, ele pode ser propenso a erros. PDO (PHP Data Objects) oferece uma alternativa robusta dentro do MySQL padrão.
PDO garante que todas as entradas do banco de dados sejam tratadas como texto, eliminando a necessidade de escape manual. Essa abordagem, combinada com a codificação de entidade HTML adequada para exibição de dados, fornece uma defesa sólida contra injeção.
Para estabelecer uma conexão de banco de dados com PDO, crie um objeto de banco de dados:
try {
$db = new PDO("mysql:host=[hostname];dbname=[database]", '[username]', '[password]');
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES utf8");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->exec('SET NAMES utf8');
} catch (PDOException $e) {
echo $e->getMessage();
}
Para preparar uma consulta, use o método prepare:
$stmt = $db->prepare('SELECT * FROM Table WHERE id = ?');
Vincule valores aos placeholders da consulta usando o método bindParam:
$stmt->bindParam(1, $id);
Execute a consulta usando o método execute:
$stmt->execute();
PDO oferece inúmeras vantagens:
Lembre-se de sempre usar PDO para conexões de banco de dados e combiná-lo com a codificação de entidade HTML adequada para manipulação segura de dados. O PDO fornece uma maneira robusta e eficiente de proteger seus aplicativos contra injeção de SQL.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3