jueves, 27 de agosto de 2015

El GET invisible.

Hoy por casualidad he descubierto un bug en un código PHP que permite realizar cualquier operación con la aplicación sin estar autenticado, y que no se detecta con las herramientas de depuración de los navegadores web.

El programador de la aplicación realiza de forma sistemática una comprobación de la autenticación del usuario al principio de cada página PHP y en caso de no estar autenticado envía al cliente un cabecera HTTP 302 Found. Cuando el programador probaba la aplicación, con el Chrome y sus herramientas de depuración de red, podía ver perfectamente como en cada GET sin cookie de autenciación el navegador recibía un código 302 y, en el cuerpo del response, un mensaje gordo que decía "Failed to load response data", que es lo que dice siempre que no hay cuerpo en la respuesta HTTP.


Indispensables (o no tanto) para empezar con Node.js

En una entrada anterior hice una reseña sobre mi primer acercamiento a Node.js. Esta entrada tiene por objeto agrupar en unas pocas líneas algunas anotaciones y recomendaciones sobre las herramientas necesarias para empezar a explorar este mundo. Aunque he procurado hacer algunas pesquisas adicionales, mi punto de partida es, como no podía ser de otro modo, el curso al que hice mención con anterioridad. 

Bien, ¿Por dónde empiezo? Estoy ávido de conocimiento. Quiero hacer un "Hola mundo" ya... 

Lo primero y más importante (y tan absolutamente obvio que podrías mandarme a tomar viento...) es instalarse Node.js en el equipo. Cuando empecé con el curso, los tutores (y varios sitios web que consulté) recomendaban trabajar en un entorno Linux porque "Node en Windows podía dar algunos problemas". Yo habitualmente trabajo con Windows 7, así que al principio me rondó la idea de instalar un VirtualBox o similar, pero finalmente decidí arriesgarme con la instalación para Windows y no tuve mayores problemas. Podéis descargar el archivo .msi en este enlace. Una vez instalado tendremos a nuestra disposición todo un abanico de módulos que nos facilitarán la vida en el desarrollo de aplicaciones. 

jueves, 20 de agosto de 2015

Trasteando con Node.js y JavaScript

De un tiempo a esta parte me estoy aficionando a los MOOC (Massive Open Online Course). Me parece una magnífica manera de satisfacer mi curiosidad y de enriquecerme un poquito profesionalmente, ¡Y por un precio muy módico! De hecho creo que de disponer de más tiempo podría llegar a convertirse en una verdadera adicción afición. Hace algún tiempo conocí una plataforma en castellano (también en portugués) que se llama MiriadaX. Hice con ellos un curso de HTML5, CSS y Javascript, desarrollado por la Universidad Politécnica de Madrid y, salvando los inconvenientes y pequeñas carencias de este tipo de plataformas, me gustó bastante y me dejó cierto poso, sobre todo en lo referente a hojas de estilo. 

Hace poco he terminado otro, también de la Politécnica de Madrid, sobre servicios en la nube y Node.js. No es que me vaya a convertir en un experto en Node.js (Probablemente eso no ocurrirá en un plazo de tiempo razonable... ¡más quisiera!) pero me ha dado dado una buena overview y sobre todo me ha dejado con ganas de aprender más. Como estas cosas, si no se practican, empiezan a olvidarse casi en el mismo momento en el que presentas el último ejercicio, me hubiera gustado revisar profundamente todos los temas del curso en el blog, pero lo cierto es que el tiempo del que dispongo es muy limitado, así que no voy a hacerlo; aunque probablemente sí que iré dejando algunas píldoras... Dicen que tratando de explicar algo es como mejor termina de comprenderlo uno mismo. Sea, al menos, por tener donde agarrarme cuando quiera recordar alguna de estas cosas... 

jueves, 13 de agosto de 2015

Querying the Domain.

En una entrada en SapiensWorks sobre DDD he tenido una interesante discusión que voy a dejar aquí para que no se pierda en un futuro.

Esto es una de las lineas del post:
CQRS: have one model (behaviour and data) handling business state changes and at least one other model handling non-domain queries
Y esto los comentarios generados: