Seminario de Seguridad en Aplicaciones Web

Durante la pasada semana impartí un curso de 10 horas sobre Seguridad en Aplicaciones Web.

Este es el temario que impartí:

  • Introducción a la Seguridad
  • Secure Development LifeCycle.
  • Modelado de amenazas.
  • Ataques habituales (OWASP)
    • Inyecciones
      • SQL Injection
      • Blind SQL Injection
      • XPath Injection
      • Command Injection
      • LDAP Injection
    • Cross Site Scripting
    • Cross Site Request Forgery
    • Path Traversal
    • File Upload
  • Google Hacking: GDBH
  • Herramientas para la auditoría de un sitio web
    • Firefox como herramienta de auditoría
  • Introducción a la criptografía.
    • SSL
  • Seguridad en el servidor
    • Autenticación Básica en Apache
    • SSL en IIS
    • SSL en Apache

El rey ha muerto. Viva el rey

He semi-jubilado mi anterior portátil, dijkstra. El pobre pasaba más calor que yo, y a 80º le daba por apagarse, oiga. Ahora sirve como máquina de trasteo, pues sorprendentemente con Linux aguanta el tirón, y hasta me compiló Mono y Moonlight desde el SVN sin morir en el intento.

Ahora sirve a la causa un LG R200 Chocolate llamado floyd. Y espero que sirva rápido, pues en este periodo de transición he dejado bastantes cosas pendientes.

Me voy al paro

Después de once meses, dejo Doñana. Parece que fue ayer cuando decía adiós a mi anterior trabajo. Durante este tiempo he aprendido un montón, he conocido gente fabulosa y, lo más importante, me lo he pasado genial. No tengo palabras, como mis compañeros saben y youtube puede mostrar.

Equipo de Doñana
De izda a dcha, fila superior: Christian López, Antonio Galisteo, Miguel A. Pérez, Juanma Laó, Javi Fdez “mudi”, Marcos Cobeña.
Fila inferior: Pablo Íñigo “geus”, Miguel A. Ramos, Luis G. Torres, Rafa Vargas.

Este ciclo ha llegado a su final. Sólo puedo dar las gracias a todos por haberme dado la oportunidad de trabajar con vosotros.
Gracias.

Después de dos años, abandono la B1.30.
B1.30

Google Summer of Code final track

Google Summer of Code

Ya estamos en el último mes de la beca Google Summer of Code. Es hora de analizar cosas.

Antes de comenzar con el proyecto, pensaba escribir ciertas entradas sobre mi trabajo. Al final no ha sido así. Quizá, involuntariamente, haya pasado más tiempo haciendo cosas que hablando. Eso no es del todo malo, salvo que en todo proyecto se debe documentar algo (por si te pilla un autobús), y los blogs son una manera de hacerlo.

Así que, aunque no me vaya a meter en temas de código, si quiero dejar constancia de algunas cosillas.

En primer lugar, participar en un proyecto del cual no conoces todo asusta. Al principio me fue algo complicado comenzar, pero gracias a código similar de otros diagramas o de la antigua implementación (recordemos que estoy reprogramando algo existente) se acaba tirando hacia adelante. Sin embargo, tengo la certeza de que este es el diagrama más “especial” de los que abarca actualmente ArgoUML, por lo que ha sido muy importante la guía del mentor.

Sobre el mentor, Bob, sólo tengo buenas palabras. A pesar de que se nota que no me dedica todo el tiempo que le gustaría (cosa bastante común con los mentores en el programa SoC), su ayuda resulta indispensable. Una de las cosas que más me asustaba de adentrarme en ArgoUML es que no es la comunidad más comunicativa que he visto. O al menos eso pensaba antes. Sin embargo, he recibido feedback de algunos desarrolladores, e incluso algún parche.

Sobre el proyecto, me he dado cuenta de lo que fastidia la incertidumbre. El no tener en la cabeza cómo debe ser el resultado final hace que todos tus balances tiendan a ser pesimistas, o al menos eso me ocurre a mí. Al menos, que Bob sí lo tuviera muy claro ha hecho que el proyecto avance sin demasiada dilación. Él siempre ha tenido una visión más optimista acerca del estado del proyecto. A estas alturas, yo tengo la sensación de que para cuando termine el plazo de la beca no estará terminado el proyecto. Sin embargo, creo que el resultado actual posee la mayor parte de las características de la versión antigua (excepto las no deseadas, claro está).

Sobre la manera de trabajar con un proyecto Java sí que he aprendido mucho. Sobre Eclipse he aprendido millones de trucos, incluso le he perdido el asco al Subclipse (siempre fuí partidario de TortoiseSVN, pero me he obligado a usar Subclipse). Sin lugar a dudas, lo que más me ha gustado ha sido utilizar Checklipse. Checklipse no es más que un plugin para Eclipse que utiliza CheckStyle. Gracias a esto, saltarse las normas de estilo se puede considerar un fallo de compilación, o un warning, con lo que se mantiene el código con un estilo coherente constantemente.

Sobre la infraestructura de Tigris, me he adaptado bien. Sin embargo, he echado en falta la interfaz amigable de Trac, así como la posibilidad de añadir hooks al repositorio de Subversion.

Para el futuro, cuento con terminar la implementación del diagrama, así como añadir la sincronización con el diagrama de colaboración, soporte para ingeniería inversa al diagrama de secuencias, así como alguna sorpresa que mejor me guardo.

Espero dentro de un mes volver a escribir sobre el tema, y que todo sean cosas positivas. Por mi parte, estoy seguro de ello 🙂

OpenLayers

OpenLayers

Para aquellos que no lo conozcan, OpenLayers es una biblioteca en JavaScript para visualizar mapas. Provee una API en JavaScript que facilita la inclusión de mapas de diversas fuentes en una web. OpenLayers actualmente soporta capas OGC WMS, navegación, iconos, marcadores, y selección de capas, entre otras; además, posee wrappers de los servicios de mapas más conocidos, tales como Google Maps, Yahoo Maps o MSN Virtual Earth.

A través del blog de OpenLayers, me entero de que han empezado a publicar un archivo en el svn con una lista de todas las personas que han contribuído a OpenLayers, y aparezco en ella. Me ha hecho mucha ilusión. 😀

Últimamente no participo demasiado activamente en esta comunidad, pero espero poder seguir aportando pronto.

Acceso a la información de las tablas de una base de datos Access

El amigo Luis, que está sacando gran partido a las bases de datos Access según me cuentan (espero que pronto lo muestre), me preguntaba hoy que si conocía alguna manera de acceder a los datos acerca de las tablas en una base de datos Access. Tenía una ligera idea de por dónde iban los tiros (MSysObjects), y, tras investigar un poco, a continuación paso a enumerar las sentencias necesarias para acceder a diversa información:

Número de tablas de usuario:

SELECT COUNT(*)
FROM msysobjects
WHERE (((msysobjects.Type)=1) AND ((msysobjects.Flags)=0));

Nombre de todas las tablas de usuario:

SELECT msysobjects.Name
FROM msysobjects
WHERE (((msysobjects.Type)=1) AND ((msysobjects.Flags)=0));

Número de formularios:

SELECT COUNT(*)
FROM msysobjects
WHERE (((msysobjects.Type)=-32768) AND ((msysobjects.Flags)=0));

Nombre de todos los formularios:

SELECT msysobjects.Name
FROM msysobjects
WHERE (((msysobjects.Type)=-32768) AND ((msysobjects.Flags)=0));

Número de consultas:

SELECT COUNT(*)
FROM msysobjects
WHERE (((msysobjects.Type)=5) AND ((msysobjects.Flags)=0));

Nombre de todas las consultas:

SELECT msysobjects.Name
FROM msysobjects
WHERE (((msysobjects.Type)=5) AND ((msysobjects.Flags)=0));

¿Preguntas? ¿Sugerencias? Usen los comentarios 🙂

Bugtracking

Me:
haces click y peta
ta to a medias

Other:
esa frase ma gustao
ponla en tu blog
haces click y peta
jajajajajaja
deja solo move el raton