Publicado Capítulo 4 Sistema de Routing de Symfony2

Me complace anunciar que ya ha sido publicado mi primer capítulo sobre la Guía de Symfony2 que he desarrollado en conjunto con Juan Ardissone para Maestros del Web, el cual pueden acceder desde aquí: Sistema de Routing.

El capítulo original era realmente largo, porque el Sistema de Routing de Symfony2 es bastante extenso, por eso fue dividido en 2, separando la explicación del Sistema de la parte realmente práctica (definiendo rutas con comodines) que apreciarán en el próximo capitulo.

Este capitulo es netamente teórico, debido a que consideré importante dejar claro lo que realmente hace el sistema de Routing, porque si bien es importante saber definir y crear las rutas en nuestros proyectos, también es fundamental comprender el por qué y como funciona dicho sistema, sobretodo dirigido a los principiantes en MVC, para que comprendan la diferencia crucial entre los Controllers del Front Controller.

La última sección de éste primer capítulo (rutas por defecto en el entorno de desarrollo) nació de la inquietud de un usuario en los capítulos anteriores, y aunque Juan le proporcionará la solución adecuada, me pareció ideal integrarla como complemento en éste capítulo, es por ello lo importante de la comunidad de usuarios y los aportes/dudas que tengas, así nos ayudan a mejorar la guía y difundir el conocimiento, ¡ no duden de preguntar !.

Bueno, espero que les guste este primer capítulo, ¡¡¡y esperen los próximos!!!, francamente es un honor poder colaborar con la comunidad de Maestros del Web.


Publicado por Maycol Alvarez, última modificación el 07-03-2012 08:59 AM

Inicio de la Publicación de la Guía de Symfony 2

Es un placer informar que se ha iniciado la publicación de la esperada Guía de Symfony 2 en Maestros del Web, que junto con la colaboración de Juan Ardissone y mi persona: hemos realizado una Guía donde plasmamos nuestras experiencias al trabajar con este maravilloso Framework.

El Primer capítulo Introducción a Symfony 2 ya está publicado.

La guía será publicada semanalmente hasta cubrir en su totalidad los 13 capítulos:

  1. Introducción a Symfony 2
  2. El proyecto y los Bundles
  3. Creando páginas con Symfony 2
  4. Sistema de Routing *
  5. Definición de rutas con comodines *
  6. El controlador *
  7. La vista y Twig *
  8. Configurando nuestra base de datos
  9. Manipulando datos con Doctrine
  10. Creación de formularios
  11. Integrando Ajax *
  12. Instalando Bundles de terceros *
  13. Seguridad *
* capítulos en que colaboro.

Esperamos que sea de su agrado, provecho y que disfruten la Guía!!!.

Si quieres seguir a Juan Ardissone: Web Site: http://blog.micayael.com Twitter: @juanardissone


Publicado por Maycol Alvarez, última modificación el 15-02-2012 03:40 PM

Reiniciando mi blog, con Dominio propio

Comenzando el Año me propuse algo: "hacer realmente algo completo con Symfony2", lamentablemente las obligaciones del trabajo no me habían permitido dar continuidad a mi blog maycolalvarez.blogspot.com (que tiene 2 años muerto) ni mucho menos de hacer algo con Symfony2, afortunadamente que mejor oportunidad que hacer mi blog personal en él y con ello matar 2 pájaros de un solo código XD

Sé que muchos dirán: "pero cab***!!!!, no reinventes la rueda usa Wordpres", y por supuesto tienen toda la razón, para un proyecto profesional yo no lo haría tan radical, pero como es mi página, me arriesgo XD

Todavía le falta mucho por agregar: SEO, RSS, Filtros, un poquito de Ajax :-S, pero seguro que en poco tiempo tendré un blog de altura, en Symfony2 y con una sensación de satisfacción cuando disfrutas del fruto de tu esfuerzo.


Etiquetas: Dominio Blog
Publicado por Maycol Alvarez, última modificación el 13-02-2012 12:41 PM

Seguridad en PHP: XSS o Scripting de Sitios Cruzados

De los ataques para sistemas web, los XSS (Cross-site Scripting) suelen ser letales, pero no para el sitio, sino para lo usuarios, los ataques XSS se aprovechan de las fallas en la validación de código HTML por parte del servidor para así extraer información del usuario.

¿pero si mi vista no me falla seria CSS y NO XSS?: estas en lo cierto, se les denominó así debido a que podría confundirse con el ya establecido lenguaje de definición de estilos en cascada o Cascading Style Sheets.

Imagina que estas en un sitio con un típico buscador que se basa en un recuadro y el clásico botón "buscar", es un simple formulario pero si desde el servidor no se valida debidamente la data enviada con el fin de evitar la introducción de código html o scripts, podrás colocar lo siguiente:

<script>alert("Hola no estoy protegido contra XSS XD");</script>

Cuando presiones en el botón buscar, es muy probable que el resultado que envié el servidor sea que no se ha encontrado dicho texto, y por gajes del oficio se muestre el mismo texto buscado, es decir un clásico echo $_GET['texto_buscado']; en php; y como lo ingresado es una declaración de script, el resultado en tu navegador seria el cuadro de alerta con el mensaje en cuestión

Te resultará gracioso y te preguntarás ¿¡pero esta cosa tan infantil puede hacerme tanto daño!? y soltarás alguna risa, ¿pero si resulta que te llega un correo o das click en un mensaje publicitario (que o muy bien pudo ser inyectado en el sitio, o lo abres desde otra página que tienes abierta) que contenga algún link+javascript, preparado para hacer uso de ese formulario no validado, que en lugar de ese inocente alert trate de robar tus datos de las cookies del sitio para ser almacenados en otro sitio atacante?: el resultado sera que el mismo podría enviar todos los datos de las cookies almacenados en el navegador a un servidor y con los mismos datos podrían hacerte mucho daño, ¡sobre todo si el formulario tuviese relación alguna con dinero!.

Ahora el tema se vuelve un poco más interesante, pero aclaremos una cosa, esto es sólo la punta del isberg, porque los ataques XSS se clasifican en dos tipos:

XSS indirecto o reflejado: tal como el ejemplo anterior, se basa en enviar código javascript que trate de robar las cookies de la sesión del usuario, de manera que el mismo sea ejecutado por el navegador debido a que o bien sea impreso en la salida del html (<script> embebido) o sea el destino (src="javascript:") de un iframe que sea llamado con la pagina HTML, permitiendo una exitosa ejecución de scripts

XSS Directo o persistente: a diferencia del anterior se basa en tratar de explotar la debilidad el filtro de HTML con etiquetas y métodos que permiten ejecutar código y que no son muy conocidos. dependen también del navegador, por ejemplo, en Wikipedia aparecen muy buenos ejemplos:


<BR SIZE = "&{alert('XSS')}" >
<FK STYLE = "behavior: url(http://yoursite/xss.htc);" >
<DIV STYLE = "background-image: url(javascript:alert('XSS'))">
<div fu = "alert('Hola mundo');" STYLE = "background-image: url(javascript:eval(this.fu))" >

¿¡SOLUCIONES!?: muchas, y dependen mucho de como tienes desarrollado tu site php, las más sofisticadas son las que proveen algunos frameworks php como symfony en el mecanismo que pasa variables a la vista desde el controlador, de no usar un framework un simple htmlentities o htmlespecialchars serian una solución rápida para tal lío, o si te comprometes a realizar un avanzado filtro para eliminar todo vestigio de html con script peligrosos para tu sistema.

Como dije este artículo solo es la punta del isberg, todavía se siguen descubriendo nuevas y novedosas formas de ataques XSS, pero siempre es bueno estar preparado para las batallas a venir, mucha suerte!


Publicado por Maycol Alvarez, última modificación el 13-02-2012 12:41 PM