Pregunta

¿Alguien puede explicarme en inglés simple qué son las consultas parametrizadas y cómo implementarlas en PHP para una base de datos MySQL para evitar la inyección de SQL?

¿Fue útil?

Solución

La sección declaraciones preparadas y procedimientos almacenados de PHP manual, aunque se relaciona específicamente con PDO, lo cubre bien cuando dice:

Se pueden considerar como una especie de plantilla compilada para el SQL que un la aplicación quiere ejecutarse, eso puede ser personalizado mediante parámetros variables. Los estados de cuenta preparados ofrecen dos beneficios:

  • La consulta solo debe analizarse (o preparado) una vez, pero se puede ejecutar varias veces con el mismo o diferentes parámetros. Cuando la consulta está preparada, la base de datos analizar, compilar y optimizar su plan para ejecutar la consulta. Para consultas complejas que este proceso puede tomar suficiente tiempo para que se note ralentizar una aplicación si hay un Necesito repetir la misma consulta muchas veces con diferentes parámetros. Por usando una declaración preparada el La aplicación evita repetir el analizar / compilar / optimizar ciclo. Esta significa que las declaraciones preparadas utilizan menos recursos y, por lo tanto, se ejecuta más rápido.

  • Los parámetros de las declaraciones preparadas no es necesario cotizar; el conductor maneja esto automáticamente. Si una aplicación utiliza exclusivamente preparados declaraciones, el desarrollador puede estar seguro que no ocurrirá ninguna inyección de SQL (sin embargo, si otras partes del la consulta se está construyendo con entrada sin escape, la inyección SQL es todavía es posible).

Si busca un ejemplo específico de cómo usarlos, la página vinculada anterior también incluye ejemplos de código.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top