Seguridad en bases de datos
Tabla de contenidos
Hoy en día, las bases de datos son componentes esenciales de cualquier aplicación web,
permitiendo a los sitios web proveer variedad de contenido dinámico. Puesto que se puede
almacenar información muy delicada o secreta en una base de datos, debería considerarse
ampliamente proteger las bases de datos.
Para obtener o almacenar cualquier información, es necesario conectarse a la base de datos,
enviar una consulta válida, obtener el resultado, y cerrar la conexión.
Hoy en día, el lenguaje de consultas más utilizado en esta interacción es el
Lenguaje Estructurado de Consultas (SQL, por sus siglas en inglés). Vea como un atacante puede realizar manipulaciones maliciosas con una consulta SQL.
Como es de suponer, PHP no puede proteger una base de datos por sí mismo. Las
siguientes secciones tienen como objetivo ser una introducción básica de cómo
acceder y manipular bases de datos dentro de scripts de PHP.
Tenga en mente esta sencilla regla: Protección en profundidad. En cuantos más sitios se
tomen acciones para aumentar la protección de una base de datos, menor es la
probabilidad de que un atacante tenga éxito en exponer o abusar de cualquier información
que tenga almacenada. Un buen diseño del esquema de la base de datos y de la aplicación
se ocupará de sus mayores temores.
gabe dot aust at gmail dot com ¶2 days ago
The most significant way to protect databases is to simply use authentication! There are production systems online with null and default administrator credentials. See the recent "The Real World" hack...
Rule 1: Simply use authentication instead of not using it... Obviously do not save the credentials in a public-readable file.
Rule 2: Create a subsidiary account with access only to the live schema being used by your PHP app, i.e. never use the global DBMS admin account as a service login.
Rule 3: Block access at the DBMS end to only allow the web server to access the API. Most access is network based so that will involve filtering by IP.
Rule 4: You can obfuscate a bit more by setting a non-standard port but this may require code changes in the API calls you coded.
The above are some simple steps anyone can perform. More serious securing would likely involve setting up SSL connectivity.