E-Zine Exclusivo para o Whastapp

Por que não devemos usar funções do tipo mysql_*

foto_ramos Por que não devemos usar funções do tipo mysql_*

Ramos de Souza Janones

Janones, é um empreendedor brasileiro apaixonado por empreendedorismo e tecnologia. Ao longo dos anos trabalhando com o desenvolvimento de softwares desktop desde a linguagem Clipper, passando pelo Delphi e atualmente com Java.

Optou pela formação de Publicidade e Marketing por sua segunda empresa de tecnologia ter participado do "boom" da internet nos anos 90 e na procura de melhorar seus conhecimentos em negócios.

Em razão da principal formação e profundos conhecimentos em programação e banco de dados, é capaz de realizar o desenvolvimento de aplicativos web, desktop e mobile com maior criatividade e inovação que profissionais de desenvolvimento com uma formação única e mais especifica, dedicada somente ao desenvolvimento de softwares.

Com toda sua experiência com empresas de software, sua formação e paixão por negócios escreveu o livro "Marketing para Empresas e Profissionais de Software", publicado pela editora carioca Ciência Moderna em 2012. Além de outros livros sobre programação.
foto_ramos Por que não devemos usar funções do tipo mysql_*

Resumo

A resposta é uma só: não devemos usar funções da extensão “mysql” pelo seu desenvolvimento ter sido descontinuado; a extensão vai se tornar obsoleta em breve, ou seja, código que utilize essas funções não irá funcionar em futuras versões do PHP.


Detalhes

Não há problemas de segurança com a biblioteca em si, mas sim com os usuários da biblioteca.

A votação para descontinuar (deprecate) ou não resultou em 25 votos a favor e 12 votos contra. Foi uma boa maioria, mas não foi uma decisão unânime. Fonte (oficial): https://wiki.php.net/rfc/mysql_deprecation

Curso de PHP ERP com NFe.

A extensão não tem defeitos. O problema é a má utilização. Ela pode ser usada com segurança, e bons desenvolvedores têm feito isso há anos.

A citação abaixo, também desse mesmo documento oficial, aponta para as verdadeiras razões para descontinuar a extensão:

ext/mysql is hard to maintain code. It is not getting new features. Keeping it up to date for working with new versions of libmysql or mysqlnd versions is work, we probably could spend that time better.

(A extensão mysql contém código de difícil manutenção. Não está recebendo novas “features”. Mantê-la atualizada para funcionar com novas versões de libmysqld e mysqlnd é trabalhoso; nós poderíamos estar usando melhor esse tempo.)

Em outras palavras: “Para que ter um trabalhão para manter esse código velho?” – pois na medida em que novas versões do MySQL (e suas “client libs”) são lançadas, a extensão precisa ser atualizada…

…e, além disso, já existem a extensão mysqli (mais moderna) e a alternativa PDO… então… para que continuar mantendo? Vamos descontinuar? Aí, 25 votaram “sim”, 12 votaram “não”, e a decisão foi tomada.

Mais detalhes

Porque o uso das funções mysql_* foi desaprovado (deprecated) a partir do PHP 5.5 e, segundo a documentação, as funções serão removidas em versões futuras do PHP, fazendo com que os programas que as utilizam parem de funcionar nessas versões.

Limitações das funções mysql_*

Ao contrário das funções mysqli_*, as funções mysql_* não dão suporte a

  • consultas assíncronas, não-bloqueantes
  • consultas parametrizadas
  • stored procedures
  • transações

A falta de suporte a consultas parametrizadas significa que, ao usar funções mysql_* sem tomar certas precauções, seu programa está vulnerável a ataques de injeção de SQL, comprometendo a segurança e integridade dos dados. Exemplo:

// consulta vulnerável a injeção de SQL

$query =("SELECT * FROM alunos WHERE id = $id")

// consulta parametrizada, variável $id é higienizada

$query =("SELECT * FROM alunos WHERE id = ?")

$query->bind_param("i", $id);

Alternativas

Como alternativa, recomenda-se usar funções mysqli_*, que superam as limitações já mencionadas das funções mysql_*.

Outra opção é usar PDO (PHP Data Objects) que fornece uma camada de abstração de acesso a dados, o que significa que, independentemente de qual banco de dados você está usando, você pode usar as mesmas funções para emitir consultas e buscar dados.

Um quandro para ilustrar

cCRCl-350x213 Por que não devemos usar funções do tipo mysql_*

 

Aproveitando, segue nossa indicação:

Curso de Laravel – Plataforma EAD (LaraSchool), foi criado pelaEspecializaTi. Resumidamente: Neste curso você vai aprender a criar uma plataforma ead multi usuários, onde qualquer pessoa pode se cadastrar no sistema e postar cursos e comercializar e ainda aprenderá como integrar o Laravel com um dos gateways de pagamentos mais famosos que existem para produtos digitais, o HotMart. Espero que goste desta dica! 😉

Top
%d blogueiros gostam disto: