La mayoría de las aplicaciones web son usadas como un conducto entre fuentes de información y el usuario, esto es, las aplicaciones web son usadas para interactuar con una base de datos.
Muchos
programadores no dan importancia al filtrado de datos provenientes de
una consulta a la base de datos, debido a que consideran a esta fuente
como confiable. Aunque el riesgo a primera vista parecería menor, es una
práctica recomendable no confiar en la seguridad de la base de datos e
implementar la seguridad a fondo y con redundancia. De esta manera, si
algún dato malicioso fue inyectado a la base de datos, nuestra lógica de
filtrado puede percatarse de ello.
Exposición de Credenciales de Acceso:
Uno
de los asuntos principales a ser cuidados cuando se utiliza una base de
datos es el almacenamiento de las credenciales de acceso a ella.
Los
datos de usuario y password son considerados sensibles, por lo que
deben tener garantizada una atención especial. En archivos de
configuración es común encontrar estos datos los cuales se encuentran
como texto en claro.
La
intercepción o acceso no autorizado de esta información podría
comprometer los servidores de bases de datos o gestores de contenidos
en donde estén alojados. Si por alguna razón no fuera posible localizar
al archivo que contiene esta información fuera del directorio raíz, es
necesario configurar el servidor web para rechazar las peticiones de
recursos que no deben ser accesibles.
SQL Injection
La
inyección de código SQL es la vulnerabilidad número uno en el top de
OWASP (OWASP, 2015). Para que exista una vulnerabilidad de SQL Injection
se requieren dos fallas por parte del programador:
Fallas en el filtrado de los datos.
Fallas en el escapado de los datos al enviarlos a la base de datos (escapado de salida).
Ninguno
de estos pasos cruciales debe ser omitido, y los dos pasos requieren
especial atención para poder minimizar los errores. Afortunadamente los
ataques de SQL Injection son fácilmente evitables, mientras filtremos y
escapemos las salidas.
Exposición de datos
Una
de las preocupaciones más comunes relacionadas con las bases de datos
es la exposición de datos sensibles. Al almacenar números de tarjetas de
crédito, por ejemplo, es preferible asegurarse que los datos
almacenados en la base de datos se encuentran seguros e inaccesibles
incluso para los administradores de la base.
Para
asegurar que no se almacenan datos como texto en claro en la base de
datos, se pueden realizar procedimientos de hash a las cadenas
almacenadas para que no sea entendible la información a simple vista. Se
debe considerar el costo de esta implementación ya que habría que
obtener el hash al insertarlo y al extraerlo realizar la operación
inversa, lo que conllevaría a que la aplicación tarde un poco más en
responder.
No hay comentarios:
Publicar un comentario