Sentencias preparadas de MySQL en PHP (ejemplos orientados a objetos)

Encuentro triste cuantos sistemas en linea hay desprotegidos aún contra el tipo de ataque más simple, inyecciones de SQL. Esta es una guía y un conjunto de ejemplos sobre el uso de sentencias preparadas de MySQL en PHP. Si quieres ver como un ataque de inyección de SQL funciona puedes leer el artículo previo Un ataque de inyección de SQL. Hay una guía similar a esta pero utilizando las funciones estructurales regulares de la librería MysqlI en Sentencias preparadas de MySQL en PHP (ejemplos estructurados).

Sentencias preparadas de MySQL en PHP (ejemplos estructurados)

Encuentro triste cuantos sistemas en linea hay desprotegidos aún contra el tipo de ataque más simple, inyecciones de SQL. Esta es una guía y un conjunto de ejemplos sobre el uso de sentencias preparadas de MySQL en PHP. Si quieres ver como un ataque de inyección de SQL funciona puedes leer el artículo previo Un ataque de inyección de SQL. Hay una guía similar a esta pero utilizando la interfase orientada a objetos de MysqlI en los ejemplos en Sentencias preparadas de MySQL en PHP (ejemplos orientados a objetos).

Un ataque de inyección de SQL

Ya que escribí dos guías diferentes sobre el uso de sentencias preparadas de MySQL en PHP, y una de las razones para usar esto es para prevenir ataques de inyección de SQL, voy a escribir un poco sobre estos ataques que tantos sitios web han sufrido y continúan sufriendo incluso hoy. Más que definir que es este ataque, el objetivo es mostrar como funciona.

Manejando MySQL desde la linea de comandos

Si nuestro servicio de hospedaje nos ofrece un shell SSH y tiene MySQL instalado, o si tenemos MySQL instalado en nuestra computadora, podemos administrar una base de datos desde la interfase de linea de comandos. Si desarrollamos programas que requieres del uso de una base de datos MySQL, es muy probable que ya estemos familiarizado con las peticiones de SQL. Utilizando el comando mysql podemos enviar estas peticiones a la base de datos.

Trabajando con UTF-8 en PHP, MySQL y Apache

Como ya he publicado anteriormente en este sitio web, creo que es una buena idea estandarizar en una misma codificación de caracteres a través de todas las partes de un sistema, y ya que mi codificación de caracteres preferida es UTF-8, cuando creo un sistema con PHP reviso lo siguiente:

  • Que el navegador recibe e interpreta la salida de mis scripts de PHP como UTF-8.
  • Que los formularios en (X)HTML aceptan UTF-8.
  • Que PHP trata los datos recibidos de una base de datos de MySQL como UTF-8.