Desarrollo: MVC – 3 Capas

Escribo para aclarar (y no olvidar) sobre lo que es el MVC y 3 Capas, espero que este pequeño artículo pueda ayudar  a aclarar la duda si estas dos cosas son lo mismo.

En primer lugar voy a mostrar como se llama al MVC (Modelo Vista Controlador):

  • Modelo MVC.
  • Arquitectura MVC.
  • Patrón MVC.
  • Patrón de diseño MVC.

Ahora como se denota a 3 Capas (no confundir nivel con capa, nivel señala el objeto físico donde están las capas lógicas).

  • Arquitectura a 3 capas.
  • Programación en 3 capas.
  • Modelo 3 capas.
  • Desarrollo en 3 capas.

Lo que hace difícil de comprender (a mi criterio) son los diferentes términos usados, en el fondo ambas son Arquitecturas.

Entonces serían:

  • Arquitectura MVC.
  • Arquitectura a 3 Capas.

Si bien los conceptos son similares, la diferencia sería la siguiente:

  • La Arquitectura MVC, es triangular es decir que hay una relación entre la vista y el controlador, entre el controlador y el modelo y entre la vista y el modelo.
  • La Arquitectura a 3 Capas, es lineal es decir que no hay una comunicación directa entre las diferentes capas. Por ejemplo la capa del cliente no se comunica directamente con la capa de datos, todas las comunicaciones deben pasar por una capa intermedia. A demás que esta emerge en los 90s, 10 años después que la Arquitectura MVC.

emesene: nueva actualización 1.6 ‘mate’

Ya tenemos entre nosotros la nueva actualización de emesene la versión 1.6 llamada «mate», no cambia mucho en esta nueva versión, generalmente lo que pasa cuando algo es realmente bueno, casi no hay muchas cosas nuevas que agregarle.

Entre las novedades podemos ver más complemente añadidos, la función de cambiar el avatar con la canción que se esta reproduciendo ahora si funciona de maravilla, entre el más interesante el temblor de ventanas, también se cambio la disposición de las opciones en las Preferencias, como se muestra en las capturas:

Simplemente emesene es fantástico, desde mi punto de vista el mejor cliente messenger que hay, lo malo es que sigue sin funcionar muy bien la cámara web, pero seguramente esto ya se subsanará en versiones posteriores.

Web Applications Security: www.sicoes.gov.bo (3)

Creo que con esto terminamos, al parecer el SICOES (www.sicoes.gov.bo) no estuvo funcionando por un par de días ya estaba pensando que era para mejorar el sistema pero veo que sigue igual. Ahora veremos parte del sistema encargado de la publicación y manejo de las licitaciones

Si bien podemos ver que el acceso esta restringido por un nombre de usuario y contraseña, como veremos más adelante no todo el sistema esta protegido.

Al revisar un poco el directorio nos encontramos con lo siguiente:

Y es justo aquí donde el sitio esta completamente sin protección:

Ahora las recomendaciones:

  • Si bien se puede proteger el contenedor (php, html, etc) de un archivo swf, esta protección se extiende para el archivo swf, para esto se tiene que hacer otro punto de seguridad obviamente usando ActionScript.
  • Personalmente no recomiendo la mezcla de php y flash, ya que podríamos tener un mejor resultado usando simplemente php y obviamente la velocidad de respuesta es más rápida.
  • Nuevamente recalco que es importante restringir el acceso a todo el sistema se pueden usar sesiones , cookies, etc, y no solo a la página o las páginas de inicio.

Para terminar con el análisis, las pruebas que se realizo al SICOES no fueron grandes hazañas no fueron técnicas de tipo “power ranger”, la verdad fueron muy simples y es un poco preocupante que un sistema donde se manejan millones de dolares y bolivianos no tenga la seguridad mínima para la protección de sus datos.

Web Applications Security: www.sicoes.gov.bo (2)

Continuando con el análisis del Sistemas de Contrataciones Estatales, SICOES (www.sicoes.gov.bo).

Voy a mostrar las vulnerabilidades que encontré y las recomendaciones para subsanar estas:

Vulnerabilidad: el nombre del archivo de conexión a la base de datos es muy obvio (conexion4.php), el cual está ubicado en: http://sicoes.sicoes.gov.bo/lib/.

Recomendación: cambiar el nombre, la ubicación y los permisos al archivo.

Vulnerabilidad: funciones (procedimientos) de la base de datos visibles en: http://sicoes.sicoes.gov.bo/lib/funciones.sql. Esta vulnerabilidad ayudaría a realizar un SQL Injection.

Recomendación: borrar el archivo, moverlo o renombrarlo y si fuera necesario almacenar los procedimientos dentro el gestionador de bases de datos.

Vulnerabilidad: error crítico en el archivo: http://sicoes.sicoes.gov.bo/lib/descargar.php, ya que permite descargar cualquier archivo del servidor (Source Code Disclosure).

  • Código de ejemplo en el servidor:

$nombre = $_GET[‘archivo’]; // Nombre del archivo

readfile($nombre);

  • Código sugerido:

$nombre = $_GET[‘archivo’]; // Nombre del archivo
$folder = ‘archivos_permitidos’;
$enlace = $folder.’/’.$nombre;
..
readfile($enlace);

Por ejemplo, hacemos una prueba con el archivo de conexión a la base de datos conexion4.php:


Vulnerabilidad: del punto anterior tenemos un Path Traversal, por ejemplo podemos obtener el siguiente archivo del sistema operativo: /etc/passwd

Recomendación: /bin/false a diferencia de /sbin/nologin añade un restricción extra como es la conexión mediante ftp. Y tomar en cuenta la recomendación del punto 3.

Aún sigue siendo mucho lo que he podido encontrar, así que nuevamente voy a dividir en una tercera entrada lo que viene que será temas de seguridad en el sistema que controla la publicación de las licitaciones.