La chiave per la gestione di php su un servizio di shared hosting è rappresentata
dal safe mode. Questo arcano fattore (
) ci consente di poter offrire un servizio trasparente
e sicuro limitando i permessi ed eseguendo alcuni controlli di sicurezza.
Per abilitare il safe mode, cercate nel file php.ini la riga
e settatela a On.
QUando aprite un file o lo leggete (fopen, gzopen, readfile), se safe mode è abilitato viene eseguito
un check per verificare se l'uid del proprietario dello script corrisponde con quello dell'owner del file
in questione. In caso non corrisponda, viene visualizzato un errore del tipo permission denied.
Per rendere più lasco questo check potete settare il parametro safe_mod_gid a On. In questo modo verrà eseguito
un test del GID.
Un'altra direttiva la cui configurazione è essenziale in un servizio shared è disable_functions, la cui sintassi è
Codice:
disable_functions = funzione1,funzione2,funzione3
che ci permette di disabilitare alcune funzioni potenzialmente dannose. A priori escluderei la funzione system.
Ultima, ma non meno importante, la direttiva open_basedir, che andrebbe settata in un contesto per-virtualhost (nella config di apache dei vhost).
Aggiungete le seguenti righe alla configurazione del vostro vhost
Codice:
<ifmodule mod_php4.c>
php_admin_value open_basedir "/var/www/my/virtual/host/basedir/"
</ifmodule>
ora incollate il seguente codice in un file .php nella directory basedir/ ed eseguitelo.
Codice:
<?
$hl = fopen("../emi.txt", "w");
?>
Dovrebbe generarvi un warning.
Nota: porre particolare attenzione alla configurazione di open_basedir. Infatti, la direttiva
Codice:
php_admin_value open_basedir "/var/www/my/virtual/host/base"
vi consentira' di scrivere nella directory base1/, base2/, base3/...
Segnalibri