PDO - Objetos de dados PHP é uma camada de acesso ao banco de dados que fornece um método uniforme de acesso a vários bancos de dados.
Ele não leva em conta a sintaxe específica do banco de dados, mas pode permitir que o processo de troca de bancos de dados e plataformas seja bastante simples, simplesmente trocando a string de conexão em muitos casos.
Instruções preparadas/consultas parametrizadas são suficientes para evitar a injeção de primeira ordem nessa instrução. Se você usar SQL dinâmico não verificado em qualquer outro lugar em seu aplicativo, ainda estará vulnerável à injeção de segunda ordem.
A injeção de segunda ordem significa que os dados passaram pelo banco de dados uma vez antes de serem incluídos em uma consulta e é muito mais difícil de obter. AFAIK, você quase nunca vê ataques reais de segunda ordem, pois geralmente é mais fácil fazer engenharia social para entrar.
PDO é um pouco mais lento que o
mysql
_*. Mas tem uma grande portabilidade. O PDO fornece uma interface única em vários bancos de dados. Isso significa que você pode usar vários bancos de dados sem usar mysql_query para mysql, mssql_query para SQL Server etc. Basta usar algo como $db->query("INSERT INTO...")
sempre. Não importa qual driver de banco de dados você está usando. Assim, para projetos maiores ou portáteis, o PDO é preferível. Mesmo Zend Framework usa DOP.
Injeção de SQL
Injeção SQL
A injeção de SQL é uma técnica em que usuários mal-intencionados podem injetar comandos SQL em uma instrução SQL, por meio de entrada de página da web.
Comandos SQL injetados podem alterar a instrução SQL e comprometer a segurança de um aplicativo da web.
As instruções preparadas pelo PDO são suficientes para evitar a injeção de SQL?
A resposta curta é NÃO, A preparação do PDO não o defenderá de todos os possíveis ataques de injeção de SQL. Ataques exemplo
Como usar o PDO?
Um exemplo:
$stmt = $dbh->prepare("SELECT * FROM tables WHERE names = :name");
$stmt->execute(array(':name' => $name));
Referências
- http:// /code.tutsplus.com/tutorials/pdo-vs-mysqli-which-should-you-use--net-24059
- http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059
- As declarações preparadas pelo DOP suficiente para evitar injeção de SQL?
- http://php.net/manual/en/book.pdo. php