¿Usar constante mágica __DIR__ es seguro?

publicado por: Anonymous

Estoy desarrollando un fichero que contenga una serie de rutas para acceder a determinados recursos del proyecto.

Para generar las rutas necesarias, utilizo __DIR__ y juego con el dato que me arroja. En función de si me encuentro en local, pruebas o producción, genero unas rutas u otras y las defino en constantes.

En sí, lo tengo finalizado y funcionando adecuadamente en cada uno de los entornos, pero me plantea una duda, llevar a cabo ésta práctica puede resultar un agujero de seguridad?

Es decir, ¿definir en constantes rutas a partir de lo obtenido de __DIR__ y no definirlas, vamos a decir, “a mano”, puede resultar peligroso o sería correcto?

solución

Actualmente el uso de __DIR__ no tiene ningun problema de seguridad y es ampliamente utilizado en los sistemas más empleados para la carga de ficheros y clases, por ejemplo en Composer que ahora mismo se usa sino en todos en la mayoría de frameworks PHP con este fin. Yo personalmente también la utilizo en combinación con dirname().

Te dejo un extracto del fichero “autoload_files.php” de Composer:

// autoload_files.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

Aquí se usa la función dirname en su forma compatible con PHP 4 y 5, con PHP7 adoptaría esta otra:

$vendorDir = (dirname(__FILE__, 2);

Documentación de la función dirname.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *