Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Por que usar uma instrução preparada pelo mysql é mais seguro do que usar as funções de escape comuns?


Um ponto importante que acho que as pessoas aqui estão perdendo é que com um banco de dados que suporta consultas parametrizadas, não há 'escapamento' para se preocupar. O mecanismo de banco de dados não combina as variáveis ​​vinculadas na instrução SQL e analisa tudo; As variáveis ​​vinculadas são mantidas separadas e nunca analisadas como uma instrução SQL genérica.

É daí que vem a segurança e a velocidade. O mecanismo de banco de dados sabe que o espaço reservado contém apenas dados, portanto, nunca é analisado como uma instrução SQL completa. A aceleração ocorre quando você prepara uma instrução uma vez e a executa várias vezes; o exemplo canônico está inserindo vários registros na mesma tabela. Nesse caso, o mecanismo de banco de dados precisa analisar, otimizar etc. apenas uma vez.

Agora, uma pegadinha é com bibliotecas de abstração de banco de dados. Às vezes, eles fingem apenas inserindo as variáveis ​​vinculadas na instrução SQL com o escape adequado. Ainda assim, isso é melhor do que fazer você mesmo.