Josemi la directiva para deshabilitar ciertas funciones es disable_functions, tb esta disable_classes muy interesante... digamos que al final configure el safe_mode enterito ... ya que nos ponemos...
Respecto al realpath y el url encoding...dios que bonito: Esto lo llaman Directory traversal, es decir llegar a directorios por debajo.
Bueno pues he hecho un pequeño ejemplo y aqui los resultados:
$fichero=$cfg_rootWeb ."/" . $HTTP_GET_VARS["ARG"];
echo "Esto es lo introducido concatenado con el root document: " . $fichero . "<br>";
$fichero=realpath($fichero);
echo "Esto es lo que devuelve el realpath despues de tratarlo: " . $fichero . "<br>";
Y al meter la siguiente entrada en la url:
http://misitio/prueba.php?ARG=%2e%2e...%2e/etc/passwd
me devuelve esto:
Esto es lo introducido concatenado con el root document: /var/www/misitio/../../../../../../etc/passwd
Esto es lo que devuelve el realpath despues de tratarlo: /etc/passwd
You must not do it!!! (esto es una comprobacion mia para saber si lo que quiere es usuario, yo quiero realmente darselo...
Conclusion: realpath() descadifica la cadena y luego la trata --> Por tanto una brecha menos.
Un saludo
P.D: Os vais a reir, pero llevo dos semanas intentanto hacer un portal de autentificacion (cluster creo que ya sabe de lo que hablo) y aún no he empezado casi con el codigo...solo se lo que no debo hacer...pero no que lo que hago sea lo correcto...menudo lio.
Creo que a este "carnicero" le queda por cortar mucha carne
Saludos.
P.D.2: Vosotros podriais cambiar el nombre del post a uno mas generico de seguridad...ya que al final el tema se esta desviando un poquito... pero creo que para bien
Bye