Neste artigo veremos se PDO é a maneira mais segura de conectar a um banco de dados em PHP, quais as suas vantagens e desvantagens em relação as outras formas
Fala programador(a), beleza? Bora aprender mais sobre PHP e PDO!
Devemos sempre optar por PDO ao mysql_*, porém o mysqli que é uma versão mais nova do mysql_*, tem um nível de segurança alto também
O que vai diferenciar acima de qualquer forma de conectar a um banco de dados é o tratamento de dados que são passados do usuário
Se você conseguir prever todas as falhas de SQL Injection e outros hacks de banco, acaba não importando se você utilizar PDO e mysqli
Que por si só já tem artifícios para proteger de possíveis injeções de código
Neste tópico eu comento sobre a questão de mysqli x PDO, vale a pena dar uma olhada para entender a real diferença entre as duas libs
Prepared statements
É um recurso presente na PDO para que os parâmetros de uma consulta não sejam inseridas nela diretamente
E sim preparados, para que se possa eliminar qualquer intenção maliciosa
E depois montados em uma query e aí sim aplicada ao banco
Veja um exemplo:
<?php /* Execute a prepared statement by passing an array of values */ $sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?'); $sth->execute(array(150, 'red')); $red = $sth->fetchAll(); $sth->execute(array(175, 'yellow')); $yellow = $sth->fetchAll(); ?>
Retirado diretamente da documentação do PDO
Perceba que os question marks (?), futuramente serão substituídos pelos dados enviados pelo sistema e depois a query é executada, esta é a camada de segurança a mais do PDO
Já o mysql_* não tinha esta função, executando a query com os parâmetros que vinham da requisição e acarretando em problemas
Porém esta lib já foi descontinuada e não deve ser utilizada, e também perceba que não é a mesma coisa que mysqli
Conclusão
Neste artigo vimos se PDO é a maneira mais segura de conectar a um banco de dados
Que é sim mais segura que mysql_*, porém quase se equipara ao mysqli
Uma das grandes vantagens é o prepared statements, que dá a possibilidade da query ser preparada antes de ser executada
Possibilitando a remoção de qualquer injeção de código nesta etapa de preparação
Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube