Disabilita le funzioni PHP non sicure / pericolose

15

In genere la descrizione del mio lavoro mi limita alla revisione del codice delle applicazioni web. Più di recente mi è stato chiesto di fornire assistenza per l'ottimizzazione del PHP sul lato server, dove, sebbene mi sia familiare, mi manca l'esperienza.

Mi sono imbattuto in un'impostazione di configurazione chiamata:

disable_functions

Ci sono delle implicazioni di cui dovrei essere a conoscenza utilizzando questa impostazione (a parte la funzione ovvia x () sarà disabilitata e qualsiasi applicazione che usi la funzione x () non funzionerà)?

Se è qualcosa che dovrei sfruttare, posso trovare un elenco di molte funzioni che potrebbero essere pericolose, tuttavia alcune potrebbero essere necessarie a prescindere. Qualcuno ha una lista, o ha qualche suggerimento da aggiungere per quanto riguarda le funzioni che dovrebbero essere disabilitate e perché in caso mi manchi / trascuri qualcuno?

Qualsiasi intuizione sarebbe apprezzata come se io conosca molte funzioni non sicure, la mia esperienza di configurazione del server è carente.

EDIT : per chiarire eventuali dubbi sull'argomento o meno, mi è stato chiesto di fornire assistenza per OTTIMIZZARE l'ambiente PHP per aumentare la SICUREZZA, ma sto chiedendo in particolare il suddetto impostazione di configurazione. :)

    
posta Purge 29.12.2010 - 21:40
fonte

6 risposte

14

Ci sono una serie di cose che devono essere comprese qui:

  1. L'elenco delle funzioni PHP pericolose si trova qui: link . Seriamente, quasi tutte le funzioni PHP possono essere pericolose dato il contesto giusto. strlen e like sono probabilmente sicuri, ma qualsiasi funzione che parli al mondo esterno può portare sorprese se il resto del codice non è sicuro.
  2. Se vuoi proteggere il sito, la sicurezza dovrebbe essere presente in tutto il codice, disabilitando alcune funzioni qui e non funzionerà, solo per accecarti e portare a una codifica scorretta.
  3. Ci sono funzionalità in PHP che possono aiutarti a scrivere un codice più sicuro, tuttavia non renderanno il codice sicuro da quello non sicuro. Cerca open_basedir e allow_url_fopen come esempio.
  4. Puoi usare disable_functions per proibire alcune azioni che ritieni pericolose, tuttavia solo alcune classi di azioni possono essere inibite in questo modo. Ad esempio, puoi disabilitare exec,shell_exec,popen,passthru,proc_open,system,pcntl_exec e questo probabilmente impedirà l'esecuzione di programmi esterni dal tuo codice, ma la maggior parte delle cose fatte da questi programmi può essere fatta anche da PHP. E cercare di evitare cose come "scrivere un file" probabilmente non funzionerà - dovresti farlo tramite i permessi del sistema operativo, non tramite PHP. Quindi, definisci cosa vuoi proibire per primo e poi vedi se è possibile, tenendo presente che potrebbe essere impossibile.
  5. Leggi il capitolo sulla sicurezza nel manuale PHP. Leggi alcuni libri di sicurezza PHP . La sicurezza non è fatta semplicemente impostando security=On in php.ini , sfortunatamente.
risposta data 31.12.2010 - 02:18
fonte
3

Gli unici problemi di cui ti devi preoccupare sono disabilitare le funzioni che sono effettivamente necessarie. Le funzioni di disabilitazione possono sicuramente aiutare a prevenire gli abusi. Esistono infatti funzioni come exec, shell_exec, ecc. Che non dovrebbero quasi mai essere utilizzate in un ambiente di hosting condiviso.

Invece di fare affidamento solo su questa funzione, dovresti considerare di lavorare sulla sicurezza generale. Ad esempio, se usi suPHP o simili, puoi prevenire un sacco di attacchi e rendere le cose un po 'più semplici. Disattivare le funzioni dovrebbe essere l'ultima cosa di cui ti preoccupi, il tuo server dovrebbe essere sicuro prima di preoccuparti di questo.

    
risposta data 30.12.2010 - 05:34
fonte
2

Se stai ospitando un sito Web o un server Web, ci sono funzioni in PHP che possono essere utilizzate per sfruttare il sito Web o il server Web utilizzando script PHP e utilizzando questa funzione pericolosa l'hacker può ottenere il controllo completo sul server Web fino al livello principale .

L'elenco delle funzioni pericolose nello sviluppo di PHP

"apache_child_terminate, apache_setenv, define_syslog_variables, escapeshellarg, escapeshellcmd, eval, exec, fp, fput, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, ini_get_all, ini_restore, inject_code, mysql_pconnect, openlog, passante, php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec IDs sistema, xmlrpc_entity_decode"

Come disattivare le funzioni pericolose in PHP

  1. Individua il tuo file "php.ini" .
  2. quindi trova disable_functions=
  3. quindi aggiungi tutte le funzioni precedenti in disable_functions come

    disable_functions="eval, di sistema"

^^ qui ho disabilitato solo 2 funzioni puoi disabilitare qualsiasi numero di funzioni dando una lista di funzioni a disable_functions="elenco di funzioni da disabilitare separate da virgola"

Se vuoi sapere esattamente cosa funziona esattamente sopra, cerca qui la funzione qui sopra

link

    
risposta data 30.12.2010 - 07:52
fonte
2

Si prega di NON di considerare disable_functions una funzione di sicurezza.

Vedi la mia precedente risposta a un'altra domanda sullo stackoverflow - anche PHP non considera disable_functions e simile come funzione / i di sicurezza reale.

    
risposta data 22.08.2014 - 03:31
fonte
1

Non ci sono funzioni intrinsecamente pericolose in PHP. OTOH è straordinariamente facile scrivere programmi molto insicuri usando solo le funzionalità di base di PHP. IMHO, "disable_function" è un placebo per le persone che non possono / non vogliono proteggere i loro sistemi correttamente.

Non fraintendermi - come amministratore di sistema ci sono molte altre cose che dovresti fare per proteggere il tuo server - come l'impostazione di open_basedir laddove possibile, rafforzando un modello di permessi strong, mantenendo i percorsi di inclusione al di fuori della radice del documento ( o con accesso HTTP diretto disabilitato per quelle dirs) e molto altro.

I've been asked to assist with some server-side PHP optimization

Stiamo parlando di ottimizzazione o sicurezza qui?

    
risposta data 30.12.2010 - 11:05
fonte
0

Anche se non ho toccato PHP in parecchi anni, da quello che ho letto

disable_functions

è più appropriato per le situazioni di hosting condiviso.

    
risposta data 29.12.2010 - 23:14
fonte

Leggi altre domande sui tag