El diseño de mysql_query
La función es tal que debe tener cuidado de escapar de todos y cada uno de los datos que está inyectando, y si pierde incluso uno, toda su aplicación puede ser destruida por un herramienta automática de explotación de vulnerabilidades de SQL
.
Ambos mysqli
y marcadores de posición de soporte de PDO que son requeridos para asegurarse de que sus consultas estén a salvo de errores de inyección SQL. Llamando a mysql_real_escape_string
en todo no solo es tedioso, sino propenso a errores, y ahí es donde surgen los problemas.
El mysql
Las funciones son un producto de los primeros días de PHP y son significativamente más limitadas que las nuevas funciones orientadas a objetos que ofrecen tanto mysqli
como opción, o PDO por diseño.
Hay varias muy buenas razones para usar una de estas dos nuevas interfaces, pero la más importante es que mysql_query
La función es simplemente demasiado peligrosa para usar en el código de producción. Con él siempre estarás a un error de algunos problemas muy serios.
Hay una razón por la que siguen apareciendo copias de bases de datos llenas de contraseñas y números de tarjetas de crédito. Tener un punto de inyección SQL obvio hace que sea casi demasiado fácil hacerse cargo por completo de un sitio.