sql >> Base de Datos >  >> RDS >> Mysql

¿Por qué es más seguro usar una declaración preparada de mysql que usar las funciones de escape comunes?

Un punto importante que creo que la gente aquí se pierde es que con una base de datos que admite consultas parametrizadas, no hay que preocuparse por "escaparse". El motor de la base de datos no combina las variables vinculadas en la instrucción SQL y luego analiza todo; Las variables vinculadas se mantienen separadas y nunca se analizan como una instrucción SQL genérica.

De ahí viene la seguridad y la rapidez. El motor de la base de datos sabe que el marcador de posición solo contiene datos, por lo que nunca se analiza como una instrucción SQL completa. La aceleración viene cuando prepara una declaración una vez y luego la ejecuta muchas veces; el ejemplo canónico es insertar múltiples registros en la misma tabla. En este caso, el motor de la base de datos necesita analizar, optimizar, etc. solo una vez.

Ahora, un problema es con las bibliotecas de abstracción de bases de datos. A veces lo falsifican simplemente insertando las variables enlazadas en la instrucción SQL con el escape adecuado. Aun así, eso es mejor que hacerlo tú mismo.