Seguridad

Vista general

La seguridad en Internet es importante ya que, al estar disponible a todo el mundo, una web no protegida puede ser la puerta entrada de vándalos, piratas y ladrones de información.

Ágora se ha diseñado como un marco simple para la creación de documentos y sitios web sencillos, tales como páginas personales o intranets.  En ningún caso se ha pretendido que Ágora dé soporte para la programación de aplicaciones complejas, tales como administradores de contenido, foros interactivos o tiendas virtuales, por lo que se ha podido mantener la simplicidad de todo el conjunto hasta la mínima expresión.  Esto tiene ventajas y desventajas.

A pesar del segundo punto, en principio Ágora es seguro, siempre y cuando el servidor y el intérprete PHP estén correctamente configurados.  Por ello es recomendable que lea detenidamente la sección Seguridad del manual de PHP, donde se detallan cómo afectan las distintas opciones de configuración del intérprete a la seguridad del servidor y, por tanto, de Ágora.

Reduciendo puntos de entrada

Aunque ya se ha dicho que Ágora reduce los puntos de ataque reduciéndose a sí mismo a la mínima expresión, todavía pueden cerrarse más si se impide el acceso de los clientes a los subdirectorios donde se encuentren Ágora, los módulos y las vistas.  Distintos servidores tienen métodos diferentes para esto, pero es común hacerlo creando un archivo llamado .htaccess en el directorio raíz, normalmente oculto a la vista, que indique al servidor qué partes están disponibles al mundo exterior y cuales no.

Algunos marcos de desarrollo PHP muy populares reducen aún más los puntos de entrada redirigiendo todas las solicitudes (salvo las dirigidas a imágenes, estilos y archivos con código JavaScript) a un único archivo.  Hacer esto no es difícil.

Primero cree (o modifique) el archivo .htaccess con código similar al siguiente:


# Mod_rewrite en uso.
RewriteEngine on
# Si la petición no es el archivo "index.php" ni los directorios de estilo.
RewriteCond $1 !^(robots\.txt|index\.php|estilo/|imagenes/)
# reescribe la petición internamente a index.php
RewriteRule ^(.*)$ index.php/$1 [L]
    

Ahora hay que escribir el archivo index.php con el código apropiado para que obtenga el controlador de la página solicitada y generarla.  Para ello sólo hay que analizar la cadena contenida en la variable del sistema $_SERVER['REQUEST_URI'].  Para cargar el controlador podría utilizar el método Agora::cargaModulo.

Parametros de entrada

La mayor parte de los ataques a una página web se realizan aprovechando la capacidad de esta de recibir parámetros vía GET y POST.  Utilizando los métodos de la clase Agora se mantiene un único punto de entrada y permite realizar un sencillo filtro XSS.  Además permite que, extendiendo o modificando la clase para que realice comprobaciones y filtros más apropiados, todas las páginas de su web que la utilicen se vean protegidas sin mucho esfuerzo.

Si se está preguntando por qué no se han incluído ya estos filtros y comprobaciones, se debe a que no siempre son necesarios o deseables, todo depende del uso que se vayan a dar a esos datos.  Por ejemplo, es un gasto de recursos inútil realizar comprobaciones que eviten la inyección de código SQL si los datos nunca van a ser utilizados en una consulta ni van a ser almacenados en una base de datos.

En ningún caso dude en modificar o extender la clase Agora para que realice las operaciones necesarias para que sus páginas sean seguras.