Restricción de acceso a la carpeta en el alojamiento compartido

2

En el alojamiento compartido (donde no tengo acceso a los archivos httpd.conf) quiero que los archivos PHP en "MyTargetFolder" no tengan capacidad para acceder a nada en los directorios superiores.

Necesita alguna configuración como OPEN_BASEDIR, SAFE_MODE, passthru, readfile, exec, system, shell_exec, escapeshellarg, escapeshellcmd, proc_close ...

Pero aquí tengo Se encontró que OPEN_BASEDIR no es una buena solución. Además, SAFE_MODE está en desuso. ¿Qué puede ser una solución?

Sé que "Reseller, VPS y Hostings Dedicados" hacen eso, pero no quiero esas soluciones caras.

    
pregunta T.Todua 04.06.2015 - 11:58
fuente

1 respuesta

2

Si lo entiendo correctamente, no está tratando de ser un proveedor de alojamiento compartido, pero está usando un alojamiento compartido y desea restringir el acceso a los archivos dentro de una carpeta específica.

En ese caso, open_basedir haría exactamente lo que quieres.

Si tiene permiso para usar los archivos .htaccess , simplemente cree uno en MyTargetFolder y ponga esta línea en él:

php_value open_basedir /var/www/

Si no tiene permiso para usar los archivos .htaccess , deberá establecer la configuración en cada uno de sus archivos PHP dentro de MyTargetFolder :

ini_set("open_basedir", "/var/www/");

Si ahora tiene un archivo PHP en la carpeta con, por ejemplo, esta línea:

echo file_get_contents($_GET['x']);

Una llamada a:

?x=../../../../../../etc/passwd

Resultaría en:

 Warning: file_get_contents(): open_basedir restriction in effect. File(../../../../../../etc/passwd) is not within the allowed path(s)

Tenga en cuenta que todavía se puede acceder a los archivos remotos, por ejemplo:

?x=http://localhost/shell.php
    
respondido por el tim 21.03.2016 - 17:36
fuente

Lea otras preguntas en las etiquetas