Categories
AJAX PHP Seguridad Varios

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.

Categories
Recursos Varios

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 😉

Categories
.NET Varios

Mono y GNOME

Si bien es cierto que este tema ya se ha tocado en varios sitios, Dan Winship critica de una manera curiosa a los desarrolladores que se oponen a la inclusión de Mono en GNOME.

Categories
Artí­culos Varios

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.

Categories
Varios

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 ;).