Hot Capcha: el único captcha a prueba de bots

Ningún CAPTCHA es realmente efectivo, siempre tienen alguna vulnerabilidad que permite a los spammers "romper" el código que se muestra.

Para esto ha salido el ¿único? e infalible Hot Captcha, en el que para identificarnos como humanos sólo nos hace una sencilla pregunta:

"In order to prove to us you are not a robot, select the three hot people"

A ver si tienen suerte y les reconocen como seres humanos.

Enlace: Hot Capcha.

Problema de seguridad en Relay

Hoy, mientras intentaba personalizar Relay -que es un gestor de archivos basado en Ajax- para hacer que funcione como un navegador de código fuente, encontré un bug en la función getFileInfo (relay.php) que permite hacer SQL Injection.

La porción donde se encuentra la falla es: (~ línea 763)

php:
$fileid=mysql_escape_string($fileid);
$query = "select * fr0m $GLOBALS[tablePrefix]filesystem where id=$fileid";

El problema radica en que mysql_escape_string o mysql_real_escape_string sólo escapan los caracteres \x00, \n, \r, \, ', " y \x1a.; por tanto, si $fileid tendría el valor 0 or 1=1 u otra sentencia que no incluya los caracteres mencionados, ya se imaginarán que puede pasar.

Una propuesta para solucionar este problema es hacer un cast explícito de $fileid o encerrar entre comillas el valor de este parámetro en la consulta SQL (digo esto porque se hace uso de mysql_escape_string)

php:
$fileid=intval($fileid);
$query = "select * fr0m $GLOBALS[tablePrefix]filesystem where id=$fileid";

// o   
$fileid=mysql_real_escape_string($fileid);
$query = "select * fr0m $GLOBALS[tablePrefix]filesystem where id='$fileid'";

Si están utilizando Relay, es recomendable que corrijan este error, para evitar molestias por pérdida de datos :-P .

Controles Personalizados en ASP.NET – Parte 2

En la entrada anterior, vimos como extender el control TextBox (del .NET Framework) para restringir la entrada a sólo ciertos caracteres definidos en una expresión regular. Pues bien, en esta ocasión vamos a crear un control que ayudará a medir la popularidad de algún artículo o comentario.

Para la apariencia del control, tomé como base "CSS Star Rating", el cuál incluye una hoja de estilos y una imagen. Como ya había comentado en la entrada anterior, para hacer uso de estos elementos es necesario registrarlos y compilarlos, a continuación se muestra la forma de hacerlo:

Continue reading

Recursos de fin de semana (II)

Con un poco de retraso llegan los recursos de fin de semana para los que no dejan de trabajar ni domingos:

Que les sirva ;)

Controles Personalizados en ASP.NET

En esta oportunidad quiero mostrar un ejemplo sencillo de como realizar un control personalizado, éste simplemente va a extender el control TextBox que trae el .NET Framework, haciendo que sólo acepte valores definidos en una expresión regular.

Continue reading

Client does not support authentication protocol requested by server

Siempre que hago una nueva instalación de MySQL, y entro por phpMyAdmin para administrar mi base de datos me encuentro con el siguiente error:

#1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

Esto sucede porque a partir de la versión 4.1.1 MySQL usa un protocolo de autenticación basada en un algoritmo de encriptación de passwords y ya no se puede entrar como estabamos acostumbrados los usuarios antiguos.

Podemos solucionar este problema fácilmente con los siguiente pasos (Para el ejemplo estoy usando MySQL 4.1.12a-nt y Windows XP con Service Pack 2):

  1. Entramos por consola a la carpeta de MySQL y escribimos: mysql -u root -p, donde root es el usuario principal de MySQL nos pedirá que ingresemos la contraseña, en mi caso es 'mysql'.

  2. Ahora vamos a "actualizar" la contraseña de root, para eso escribimos:

    SQL:
    SET PASSWORD FOR 'root'@'localhost' = OLD_PASSWORD('mysql');
    donde root es el usuario con el cual quiero usar la antigua forma de autenticación, localhost es el nombre de mi servidor de base de datos y 'pass' es la contraseña que quiero usar (Si tenemos mas usuarios, debemos hacer lo mismo por cada usuario; es decir si tuviera algun usuario llamado 'valois' tendría que escribir SET PASSWORD FOR 'valois'@'localhost' = OLD_PASSWORD('PasswordDeValois'); y lo mismo para otros usuarios).

    Inicio de sesión en MySQL y actualización de contraseña

  3. Listo :)

Eso es todo, despues de eso podremos entrar sin problemas a administrar nuestra base de datos; sea por consola, phpMyAdmin o cualquier herramienta, cualquier duda ya saben donde molestarme.

Como salir de beta al estilo Microsoft, WTF!

Comentábamos con Alex como Microsoft terminaba la fase beta de Windows Custom Domains y al cargar la página gracias a mi conexión lenta vi unas letras rojitas que decían "Beta", las cuales desaparecieron misteriosamente después, mi curiosidad me llevó a ver el código fuente y encontré esto:

Como salir de Beta

Si asi de fácil terminan las betas, estamos seguros que pronto también estará listo IE7 ;) .

Internet Explorer 7 Beta 3

Acaba de salir una beta más de Internet Explorer, esta vez trae algunas novedades entre ellas: nuevos íconos, posibilidad de ordenar las pestañas, autentificación FTP y otras mas.

Stefano Demiliani ha bautizado a esta última beta como IE-Zilla, pero creo que eso todos ya lo sabíamos :P , supongo que cuando salga la versión final yo ya me habré jubilado. Si quieres probarlo te dejo los enlaces: