OWASP ESAPI PHP: Introducción

Hace tiempo estuve trasteando con la librería de seguridad OWASP ESAPI para PHP pero lo dejé por falta de tiempo y por la dificultad que tuve en encontrar información para usarla. Retomo ahora el tema adaptando un artículo elaborado en 2010 por Jack Kowalsky en el que hace una introducción al uso de la librería. He actualizado el código original a PHP 5.4.3.
OWASP ESAPI (Enterprise Security API) es una librería de seguridad implementada en varios formatos para desarrollar aplicaciones de bajo riesgo con la que se dispone de varios módulos que podemos utilizar y/o modificar adaptándolos a nuestras necesidades. Aparte de para PHP, existen versiones para Java (quizás la más documentada), .NET, ASP, Codlfusion, Python y Javascript.

Módulos ESAPI

Dividiré este post en varias entregas, al igual que el original:

I. Crearemos un simple sistema de blogging lleno de vulnerabilidades.
II. Implementamos un primer nivel de seguridad usando ESAPI.
III. Aseguramos los accesos a la base de datos
IV. Aseguramos las sesiones de los usuarios

El código puede descargarse aquí y para que funcione como debe necesitamos crear una base de datos:

USE insecure;  
 CREATE TABLE user (id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(16), password VARCHAR(16));  
 CREATE TABLE content (id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, title VARCHAR(140), content TEXT, date_created TIMESTAMP);  
 CREATE TABLE comments (id INT AUTO_INCREMENT PRIMARY KEY, comment VARCHAR(140), content_id INT, date_created TIMESTAMP);

Una vez generada la base de datos debemos crear un primer usuario/contraseña dado que el programa en su estado actual no lo permite.

El programa se estructura alrededor de 4 clases (en /lib):

DB: para los accesos a la base de datos
User: para la gestión de las sesiones de usuario
Content: para gestionar el contenido del blog (añadir sólo)
Comment: para gestionar los comentarios (añadir sólo)

A su vez creamos también 4 controladores y sus correspondientes ficheros HTML:

index: para mostrar el contenido del blog (index.php e index.html)
login: para abrir sesiones de usuario (login.php y login.html)
post: para postear artículos (post.php y post.html)
comment: para postear comentarios (comment.php y comment.html)

Dentro del subdirectorio /lib existe un fichero más: conf.php. Lo he añadido a esta revisión para contener datos comunes a más de un módulo y no tener que andar repitiéndolos, sobretodo en lo referente a rutas de librerías. La primera instrucción que contiene es para evitar que aparezca el STRICT STANDARS ERROR en el navegador. También he modificado index.html para permitir logout y facilitar las pruebas. Instalamos en el directorio público de nuestro servidor y probamos cómo funciona.

Si aún no hemos instalado OWASP ESAPI PHP simplemente lo descargamos y lo copiamos a nuestro servidor, bien en su propio directorio o en el de la aplicación. En un entorno de producción debemos situar el archivo ESAPI.xml (en /test/testresources) fuera del directorio raíz. En este tutorial sin embargo lo usaremos en su situación original.

Siguiente: OWASP ESAPI PHP: Asegurando las entradas

No hay comentarios:

Publicar un comentario