Limitazione dell'accesso alle cartelle in Shared Hosting

2

Nell'hosting condiviso (dove non ho accesso ai file httpd.conf) voglio che i file PHP in "MyTargetFolder" non abbiano la possibilità di accedere a qualsiasi cosa nelle directory superiori.

Ha bisogno di alcune configurazioni come OPEN_BASEDIR, SAFE_MODE, passthru, readfile, exec, system, shell_exec, escapeshellarg, escapeshellcmd, proc_close ...

Ma qui ho trovato OPEN_BASEDIR si dice che non sia una buona soluzione. Inoltre, SAFE_MODE è deprecato. Quale può essere una soluzione?

So che "Reseller, VPS e Dedicated Hostings" lo fanno, ma non voglio quelle costose soluzioni.

    
posta T.Todua 04.06.2015 - 11:58
fonte

1 risposta

2

Se ti capisco correttamente, non stai cercando di essere un provider di hosting condiviso, ma stai utilizzando l'hosting condiviso e vuoi limitare l'accesso per i file all'interno di una cartella specifica.

In questo caso, open_basedir farebbe esattamente quello che vuoi.

Se ti è consentito utilizzare .htaccess file, creane uno in MyTargetFolder e inserisci questa riga in:

php_value open_basedir /var/www/

Se non ti è consentito utilizzare .htaccess file, devi impostare le impostazioni in ognuno dei tuoi file PHP all'interno di MyTargetFolder :

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

Se ora hai un file PHP nella cartella con ad es. questa linea:

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

Una chiamata a:

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

Provocherebbe in:

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

Tieni presente che è comunque possibile accedere ai file remoti, ad esempio:

?x=http://localhost/shell.php
    
risposta data 21.03.2016 - 17:36
fonte

Leggi altre domande sui tag