Hoy en d铆a, las bases de datos son componentes cardinales de cualquier aplicaci贸n basada en web, permitiendo que los sitios web provean contenido din谩mico. Debido a que informaci贸n considerablemente sensible o secreta puede ser almacenada en una base de datos, usted debe considerar seriamente la protecci贸n de sus bases de datos.
Para recuperar o almacenar cualquier informaci贸n necesita conectarse a la base de datos, enviar una consulta v谩lida, recoger el resultado y cerrar la conexi贸n. Hoy en d铆a, el lenguaje de consultas usado com煤nmente en estas interacciones es el Lenguaje de Consultas Estructurado (SQL por sus siglas en Ingl茅s). Puede apreciar c贸mo un atacante puede intentar acometidas con una consulta SQL.
Como puede suponer, PHP no puede proteger su base de datos por s铆 solo. Las siguientes secciones est谩n dirigidas a servir de introducci贸n a los conceptos b谩sicos de c贸mo acceder y manipular bases de datos desde scripts PHP.
Mantenga en mente esta simple regla: protecci贸n en profundidad. Entre m谩s acciones tome para incrementar la protecci贸n de su base de datos, menor ser谩 la probabilidad de que un atacante tenga 茅xito exponiendo o abusando de cualquier informaci贸n almacenada. Un buen dise帽o del esquema de la base de datos y de la aplicaci贸n basta para lidiar con sus mayores temores.
El primer paso siempre es crear la base de datos, a menos que desee usar una creada por alguien m谩s. Cuando una base de datos es creada, 茅sta es asignada a un due帽o, quien ejecut贸 la sentencia de creaci贸n. Usualmente, 煤nicamente el due帽o (o un super-usuario) puede hacer cualquier cosa con los objetos de esa base de datos, y para que otros usuarios puedan usarla, deben otorgarse privilegios.
Las aplicaciones nunca deber铆an conectarse a la base de datos bajo el usuario correspondiente a su due帽o, o como un super-usuario, ya que 茅stos usuarios pueden, por ejemplo, ejecutar cualquier consulta a su antojo, modificando el esquema (p. ej. eliminando tablas) o borrando su contenido completo.
Usted puede crear diferentes usuarios de la base de datos para cada aspecto de su aplicaci贸n con derechos muy limitados sobre los objetos de la base de datos. Tan solo deben otorgarse los privilegios estrictamente necesarios, y evitar que el mismo usuario pueda interactuar con la base de datos en diferentes casos de uso. Esto quiere decir que si un intruso gana acceso a su base de datos usando las credenciales de sus aplicaciones, 茅l solo puede efectuar tantos cambios como su aplicaci贸n se lo permita.
Es buena idea que no implemente toda la l贸gica del asunto en la aplicaci贸n web (es decir, en su script); en su lugar, h谩galo en el esquema de la base de datos usando vistas, disparadores o reglas. Si el sistema evoluciona, se espera que nuevos puertos sean abiertos a la aplicaci贸n, y tendr谩 que re-implementar la l贸gica para cada cliente de la base de datos. Por sobre todo, los disparadores pueden ser usados para gestionar de forma transparente todos los campos autom谩ticamente, lo cual con frecuencia provee informaci贸n 煤til cuando se depuren problemas de su aplicaci贸n, o se realicen rastreos sobre transacciones particulares.