Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Diferença entre 'mysqli_real_escape' e 'addslashes'

Bom dia! Estava assistindo as aulas de SQL Injection no Modulo 8 de PHP e MySQL II: Cookies, sessões e mais recursos!

O instrutor sugeriu que envolvesse meus atributos com o mysqli_real_escape($exemplo). Assim fugimos de selects maliciosos que quebrariam meu SQL. Principalmente no campo de email (login na aplicação), e também para suprir o problema de aspas!

Já dei manutenção em alguns sistemas web que utilizam o addslashes($exemplo) e funciona perfeitamente!

Gostaria de saber a diferença dos dois, e se tem algum mais 'seguro' que o outro?! obrigado

2 respostas

Oi Bruno, tudo bom?

A diferença é que o mysqli_real_escape_string recebe além da string em sí, a conexão. Isso da liberdade pra função olhar para a estrutura do seu banco ao tomar a decisão de quais characteres substituir/escapar na string.

Entretanto, a forma mais recomendada nas versões mais novas da linguagem é utilizar prepared statements. Nesse post do blog da alura eu deixei um exemplo de como fazer esse tipo de query tanto com o Mysqli quanto com o PDO =)

solução!

O que ficou mais evidente é que se utilizarmos mysqli ganhamos em agilidade, porém ficamos dependentes do banco mysql. Uma eventual mudança daria mais trabalho!

Caso quisermos utilizar integrar outros bancos recomendasse o PDO! Mudando pouca coisa no código!

Obrigado!