Devo consentire "allow_url_fopen" in PHP?
-
02-07-2019 - |
Domanda
Abbiamo un paio di sviluppatori che chiedono di abilitare allow_url_fopen
sul nostro server. Qual è la norma in questi giorni e se libcurl
è abilitato, c'è davvero una buona ragione per permetterlo?
L'ambiente è: Windows 2003, PHP 5.2.6, FastCGI
Soluzione
Sicuramente allow_url_include
impostato su Off, che mitiga molti dei rischi di allow_url_fopen
.
Ma poiché non tutte le versioni di PHP hanno allow_url_include
, la migliore pratica per molti è quella di disattivare fopen. Come con tutte le funzionalità, la realtà è che se non ne hai bisogno per la tua applicazione, disabilitala. Se ne hai bisogno, probabilmente il modulo curl può farlo meglio, e il refactoring della tua applicazione per usare curl per disabilitare allow_url_fopen
può scoraggiare il cracker meno determinato.
Altri suggerimenti
Penso che la risposta si riduce a quanto ti fidi che i tuoi sviluppatori utilizzino la funzione in modo responsabile? I dati da un URL esterno devono essere trattati come qualsiasi altro input non attendibile e, a condizione che sia compreso, qual è il grosso problema?
Il modo in cui lo vedo è che se trattate i vostri sviluppatori come bambini e non lasciate mai che gestiscano cose acute, allora avrete sviluppatori che non imparano mai la responsabilità di scrivere codice sicuro.
Gli attacchi di cross-site scripting sono un dolore, quindi è un voto contrario. E dovresti assolutamente avere " allow_url_include " partirai, o ti verrà un mondo di dolore.
Dipende dal tipo di sviluppo. Se la tua prototipazione abilita 'allow_url_fopen' va bene, tuttavia non c'è una differenza di velocità significativa tra libcurl e file_get_contents e abilitarla è solo una questione di convenienza.
Per i server di produzione qualsiasi chiamata a libcurl deve essere contrassegnata per un controllo di sicurezza. Come dovrebbe fopen e file_get_contents se 'allow_url_fopen' è abilitato. La disabilitazione di "allow_url_fopen" non impedisce gli exploit, ma limita solo leggermente il numero di modi in cui possono essere eseguiti.
Il grosso problema è che allow_url_fopen non è più sicuro , quindi se vuoi salvare un file da un url usando curl, devi passare da fopen / file_get per salvare il file.
- CURL è utile solo per recuperare contenuti remoti dall'URL. (allow_url_fopen non necessario)
- CURL deve essere aggiunto con Fopen o File_get se si desidera salvare in remoto file sul tuo server. (allow_url_fopen obbligatorio con CURL)
Php deve trovare altri modi per renderlo più sicuro.