Los usuarios siempre quieren tener la posibilidad de modificar los datos que ya se guardaron y de borrar las filas de una tabla si por algún motivo los datos o las filas guardados ya no sirven pero nosotros como profesionales de la Informática ¿debemos otorgarles alegremente esa posibilidad?

Hacerlo así es muy riesgoso en cuanto a la seguridad y la confiabilidad de nuestra Base de Datos, veamos algunos ejemplos:

  • Un cajero registra una venta de 6 productos, totalizando la venta 1.200 dólares. O sea que en su caja ingresaron 1.200 dólares por esa venta. Luego modifica la cantidad vendida a 3 productos y por lo tanto el total ahora registrado es de 600 dólares. Y los restantes 600 dólares se van a su bolsillo.
  • Un alumno se aplazó en Matemática pero como es amigo de la secretaria que registra las calificaciones en la computadora le pide que cambie su calificación en esa materia. Y ahora ya está aprobado.
  • Un moroso consuetudinario no puede hacer compras a crédito porque donde va a pedir un crédito le dicen que no se lo pueden otorgar porque está registrado como moroso en la Base de Datos a la cual acceden todos los comerciantes para saber la situación crediticia de los potenciales clientes. Entonces le paga a un operador de esa Base de Datos para que borre su nombre y sus antecedentes de ella. Y listo, ahora ya tiene crédito libre.
  • El empleado que carga los datos de los sueldos a pagar se auto-asigna un aumento de 200 dólares. Como la empresa tiene cientos de empleados nadie se molesta en controlar uno por uno los sueldos para verificar que sean los correctos. Después de haberse impreso la planilla de pagos de sueldos vuelve a disminuir su sueldo en esos 200 dólares. Así que su “aumento de sueldo” solamente estará registrado un corto tiempo, quizás una hora, durante cada mes. El resto del tiempo cualquier consulta a esa tabla mostrará su sueldo correcto.

Estos son solamente algunos ejemplos, hay miles más de “transfugueadas” que pueden hacer “los muchachos” si tienen abierta la posibilidad de hacerlas.

Pero tampoco podemos cerrar totalmente la posibilidad de modificar datos o de borrar filas, a veces los usuarios tienen una necesidad legítima de hacer esas operaciones entonces ¿cuál es la solución?

  • No cualquiera puede hacer esas operaciones, se necesita de un permiso especial para ello, solamente algunos usuarios deben estar autorizados. Los usuarios normales solamente tienen el privilegio de INSERT en las filas, pero no tienen el privilegio de UPDATE ni el privilegio de DELETE.
  • Cada modificación de datos o borrado de filas debe ser registrado en una tabla aparte, no en la tabla original sino en otra tabla. En esta otra tabla se guardarán, entre otros: el nombre del usuario que modificó o borró, el IP de la computadora que usó, la fecha y la hora en que ocurrió
  • En el caso de modificación, cuales eran los datos originales y cuales son ahora los nuevos datos
  • En el caso de borrado, una copia de la fila completa que borró. Alternativamente, en lugar de borrar físicamente la fila suele ser mucho mejor colocarle una “marca de borrado”. Esta es una columna que solamente indica el estado de la fila que puede ser: ACTIVO o INACTIVO. El problema con esta alternativa es que en todas las consultas que involucren a esa tabla deberemos poner en el WHERE la condición de que su estado sea ACTIVO (o INACTIVO, si lo queremos es ver a las filas “borradas”).

Conclusión:

Jamás se puede impedir que personas malintencionadas modifiquen el contenido de nuestra Base de Datos para cometer fraudes pero sí es nuestra responsabilidad dificultarles lo máximo esa posibilidad. Se nos paga (entre otras cosas) para que el contenido de la Base de Datos sea seguro y confiable, no para que cualquiera pueda meter sus pezuñas en ella y hacerle lo que se le antoje. Gente con ganas de cometer fraudes puedes encontrar en cualquier organización, por lo tanto las operaciones de UPDATE y de DELETE deben estar altamente restringidas y debe llevarse un registro minucioso de cualquiera de esas operaciones para que cuando se realice una auditoría se pueda ver claramente quien las hizo, cuando y donde.

Artículo relacionado:

El índice del blog Firebird21