Nome | Default | Modificabile | Storico dei cambiamenti |
---|---|---|---|
safe_mode | "0" | PHP_INI_SYSTEM | Removed in PHP 5.4.0. |
safe_mode_gid | "0" | PHP_INI_SYSTEM | Disponibile dal PHP 4.1.0. Rimosso din PHP 5.4.0. |
safe_mode_include_dir | NULL | PHP_INI_SYSTEM | Disponibile dal PHP 4.1.0. Rimosso in PHP 5.4.0. |
safe_mode_exec_dir | "" | PHP_INI_SYSTEM | Rimosso da PHP 5.4.0. |
safe_mode_allowed_env_vars | "PHP_" | PHP_INI_SYSTEM | Rimosso da PHP 5.4.0. |
safe_mode_protected_env_vars | "LD_LIBRARY_PATH" | PHP_INI_SYSTEM | Rimosso da PHP 5.4.0. |
Breve descrizione dei parametri di configurazione.
safe_mode
boolean
Abilita o disabilita la modalità sicura di PHP. Se PP è compilato con --enable-safe-mode è On di default, altrimenti è Off.
Questa funzionalità è DEPRECATA dal PHP 5.3.0 e RIMOSSA dal PHP 5.4.0.
safe_mode_gid
boolean
Di default, Safe Mode fa un controllo dell'UID
all'apertura dei file. Se si vuole ridurre questo controllo al GID,
abilitare safe_mode_gid.
Decide se controllare l'UID (FALSE
) o il
GID (TRUE
) al momento dell'accesso
ai file.
safe_mode_include_dir
string
I controlli UID/GID non vengono effettuati quando si includono i file da questa cartella o dalle sue sottocartelle (la cartella deve essere presente anche in include_path oppure occorre includere il percorso completo).
Dal PHP 4.2.0, questa direttiva puà ricevere un percorso separato da due punti (o punto e virgola nei sistemi Windows) come nel caso del parametro include_path, piuttosto che solo una cartella. La restrizione specificata è un prefisso, non un nome di cartella. Ciò significa che "safe_mode_include_dir = /dir/incl" permette l'accesso anche a "/dir/include" e "/dir/incls" se esistono. Quando si vuole restringere l'accesso solo alla cartella specificata, apporre uno slash. Per esempio: "safe_mode_include_dir = /dir/incl/" Se il valore di questo parametro è vuoto, nessun file con UID/GID differenti possono essere inclusi in PHP 4.2.3 e dal PHP 4.3.3. Nelle versioni precedenti, tutti i file potevano essere inclusi.safe_mode_exec_dir
string
Se PHP è usato in modalità sicura, system() e le altre funzioni che eseguono comandi di sistema si rifiutano di eseguire programmi che non siano in questa cartella. Occore usare il simbolo / come separatore di cartelle in tutti gli ambientim incluso Windows.
safe_mode_allowed_env_vars
string
L'impostazione di alcune variabile d'ambiente può essere una potenziale violazione di sicurezza. Questo parametro contiene una lista di prefissi separati da virgole. In Safe Mode, l'utente può modificare solo quelle variabili d'ambiente il cui nome comincia con i prefissi indicati. Di default, gli utenti possono impostare solo le variabili d'ambiente che cominciano con PHP_ (esempio PHP_FOO=BAR).
Nota:
Se questo parametro è vuoto, PHP permettera all'utilizzatore di modificare QUALSIASI variabile d'ambiente!
safe_mode_protected_env_vars
string
Questo parametro contiene una lista (separata da virgole) di variabili d'ambiente che l'utilizzatore finale non può cambiare usando putenv(). Queste variabili saranno protette anche se safe_mode_allowed_env_vars permette la loro modifica.
Vedere anche: open_basedir, disable_functions, disable_classes, register_globals, display_errors e log_errors.
Quando safe_mode è attiva (on), il PHP verifica se il proprietario dello script in esecuzione e il proprietario del file su cui si sta operando con una funzione sui file coincidono. Per esempio:
-rw-rw-r-- 1 rasmus rasmus 33 Jul 1 19:20 script.php -rw-r--r-- 1 root root 1116 May 26 18:01 /etc/passwd
<?php
readfile('/etc/passwd');
?>
Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2
Comunque, possono esistere ambienti in cui un controllo rigido di UID è troppo restrittivo, e un controllo sul GID è sufficiente. Questo è supportato dal parametro safe_mode_gid. Impostandolo a On si ottene il controllo su GID, impostandolo a Off si ha il controllo (di default) su UID.
Se, invece di safe_mode, viene definita una directory open_basedir allora tutte le operazioni sui file saranno limitate ai file sottostanti la directory specificata. Per esempio (nel file httpd.conf di Apache):
<Directory /docroot> php_admin_value open_basedir /docroot </Directory>
Warning: open_basedir restriction in effect. File is in wrong directory in /docroot/script.php on line 2
È possibile inoltre disabilitare le singole funzioni. Si note che il parametro disable_functions non può essere usato al di fuori di php.ini, il che significa che non si puossono disabilitare le funzioni in base al virtualhost o alla cartella nel file httpd.conf. Se si aggiunge la seguente riga al file php.ini:
disable_functions = readfile,system
Warning: readfile() has been disabled for security reasons in /docroot/script.php on line 2
Queste restrizioni di PHP non si applicano ovviamente sui file binari eseguiti.