Saltar la navegación

2.5.- Transacciones.

Ejemplo de diagrama de estados que modela el comportamiento de un servidor.

Uno de los principales fallos de seguridad que se producen en la programas clientes/servidor es que el cliente pueda realizar:

  • Operaciones no autorizadas. El servidor no puede procesar una orden a la que el cliente no tiene acceso. Por ejemplo, que el cliente realice una solicitud de información a la que no tiene acceso.
  • Mensajes mal formados. Es posible que el cliente envíe al servidor mensajes mal formados o con información incompleta que produzca un error de procesamiento del sistema llegando incluso a dejar "colgado" el servidor.

Para evitar cualquier problema de seguridad es muy importante modelar el flujo de información y el comportamiento del servidor con un diagrama de estados o autómata. Por ejemplo, en la siguiente figura puede ver que el servidor se inicia en el estado 0 y directamente envía al cliente el mensaje Introduce el comando. El cliente puede enviar los comandos:

  • ls que va al estado 2 mostrando el contenido del directorio y vuelve automáticamente al estado 1.
  • get que le lleva al estado 3 donde le solicita al cliente el nombre del archivo a mostrar. Al introducir el nombre del archivo se desplaza al estado 4 donde muestra el contenido del archivo y vuelve automáticamente al estado 1.
  • exit que le lleva directamente al estado donde finaliza la conexión del cliente (estado -1).
  • Cualquier otro comando hace que vuelva al estado 1 solicitándole al cliente que introduzca un comando válido.

Para poder seguir el comportamiento del autómata el servidor tiene que definir dos variables estado y comando. La variable estado almacena la posición en la que se encuentra y la variable comando es el comando que recibe el servidor y el que permite la transición de un estado a otro. Cuando se utilizan autómatas muy sencillos como es el caso del ejemplo, es posible modelar el comportamiento del autómata utilizando estructuras case e if. En el caso de utilizar autómatas grandes la mejor forma de modelar su comportamiento es mediante una tabla cuyas filas son los diferentes estados del autómata y la columna las diferentes entradas del sistema.

Para saber más

Si deseas más información sobre los autómatas finitos puedes consultar el siguiente enlace:

Autómata Finito.

Autoevaluación

Pregunta

¿Qué permite el diagrama de transacciones del sistema?

Respuestas

Asegurar el sistema.

Implementar los diferentes estados en los que se encuentra el servidor.

Evitar que un cliente pueda realizar una operación no autorizada.

Todas son correctas.

Retroalimentación