Includere File da altro server

GoshMaledetto

Utente Attivo
20 Dic 2012
137
0
0
www.goshweb.com
Ciao ragazzi volevo creare un file con delle funzioni php che utilizzo spesso esempio validazione mail visualizzazione data ecc. questo file risiederà sul server del mio sito ma ovviamente vorrei poterlo utilizzare anche sui siti dei miei clienti in modo che se devo modificare qualcosa in automatico mi modifica tutti i siti che gestisco. quale funzione php devo utilizzare per includerlo? basta un
PHP:
include "http://www.mio_sito.com/file.php"
o devo usare qualche altra funzione?
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
La soluzione più veloce è quella di ricavare il codice remoto e di eseguirlo direttamente dove ti serve, anche se è sempre meglio utilizzare una path locale, perché nel caso che il tuo sito non andasse o che il file venga rimosso non andranno anche i progetti dei tuoi clienti

Esempio
PHP:
$php = file_get_contents('http://sito.com/file.txt');

eval($php);

Prova::ciao();

file.txt
Codice:
class Prova{

    public static function ciao(){
         echo 'Funziona lol';
     }

}
 

GoshMaledetto

Utente Attivo
20 Dic 2012
137
0
0
www.goshweb.com
Non è assolutamente una soluzione accettabile. Se vuoi distribuire e usare delle tue librerie mettile sotto controllo di versione (leggi questo manuale), crea un account su GitHub e aggiungile ai tuoi progetti come sottomoduli.

scusa alessandro ma non ho ben capito a cosa mi puo servire sto git. ho letto delle guide ( in italiano :p ) ma non sono bene riuscito a capire i vantaggi. Vero condivido e posso confrontarmi con programmatori di tutto il mondo,posso recuperare vecchie versioni ma non ho capito come puo aiutarmi questa cosa...poi sicuro mi sono perso qualcosa
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Git è un sistema di controllo di versione e con la tua domanda non c'entra granché. Ma GitHub è un sito Web dove puoi caricare tutti i tuoi progetti Git (comprese dunque le librerie che userai nei siti), per poterli poi recuperare da qualunque posizione. Potrai includere le librerie nei siti dei tuoi clienti e poi, quando le aggiornerai, basterà scaricare la nuova versione con un comando. Git farà tutto automaticamente.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Propongo un'altra soluzione possibile (senza complicarsi la vita con documentazioni esterne :pernacchi)

Abilitando nella configurazione allow_url_include è possibile fare un piccolo sistema di gestione remota
(ti consiglio di tenerlo sempre disabilitato se non richiami pagine inerenti ai tuoi siti)

Esempio
PHP:
if(include('http://sito.com/getFile.php?project=sito1&file=file.php&auth=mypassword'))
    Prova::ciao();

getFile.php remoto
PHP:
define('PASSWORD','mypassword');
define('PROJECT_DIR','Projects');

if(!empty($_GET['auth']) && !empty($_GET['file']) && !empty($_GET['project'])){
    $path = PROJECT_DIR.'/'.$_GET['project'].'/'.$_GET['file'];
            if($_GET['auth']==PASSWORD && file_exists($path))
                echo file_get_contents($path);
}

Projects/sito1/file.php
PHP:
class Prova{

      public static function ciao(){
          echo 'Funziona lol';
      }
}

(questa è una base, ovviamente migliorabile aggiungendo più controlli e a seconda delle tue esigenze)
 
Ultima modifica:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Includere un file da remoto significa che:
  • l'esecuzione dell'applicazione è notevolmente rallentata, perché ogni volta lo script deve connettersi e scaricare i dati;
  • un utente malintenzionato che riesce ad accedere al server ospitante il file potrebbe modificarlo per far eseguire codice arbitrariamente;
  • un utente malintenzionato potrebbe scaricare il file sfruttando una qualche falla nel tuo sistema, ottenendo così informazioni sulla tua infrastruttura;
  • un utente malintenzionato potrebbe eseguire codice arbitrario tramite RFI;
Questa soluzione non è mai stata adottata perché, evidentemente, ci sono dei validi motivi.

Guarda anche qui:

Se ricordo bene a partire da PHP 5.2 la direttiva allow_url_include è disabilitata di default proprio per ragioni di sicurezza.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Infatti non è uno dei migliori ma semplicemente una possibile soluzione per progetti privati

l'esecuzione dell'applicazione è notevolmente rallentata, perché ogni volta lo script deve connettersi e scaricare i dati;
Dipende da quanto è esteso l'output ricavato e come viene elaborato

un utente malintenzionato che riesce ad accedere al server ospitante il file potrebbe modificarlo per far eseguire codice arbitrariamente;
Questo dipende dai controlli che vengono effettuati e da altri fattori di vulnerabilità che permettono di accederci

un utente malintenzionato potrebbe scaricare il file sfruttando una qualche falla nel tuo sistema, ottenendo così informazioni sulla tua infrastruttura
Idem per questo

un utente malintenzionato potrebbe eseguire codice arbitrario tramite RFI;
E anche per questo

Anche una semplice query puo far saltare l'intero sito se non è sicura, ma non per questo non si puo utilizzare un database.

Basta fare molti controlli e utilizzarlo solamente dove si è sicuri sennò ovviamente è meglio tenerlo disabilitato
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Dipende da quanto è esteso l'output ricavato e come viene elaborato
In parte, e in parte dalla latenza della connessione.

Questo dipende dai controlli che vengono effettuati e da altri fattori di vulnerabilità che permettono di accederci
Fattori del tutto imprevedibili: il PC di uno sviluppatore infetto da spyware o chissà che altro, e improvvisamente tutti i siti dei clienti smettono di funzionare o, peggio ancora, fungono da veicolo per la distribuzione di software dannoso. Non è un evento per niente raro.

Qualche altro articolo che scoraggia questa tecnica:

L'ultimo articolo porta alla luce anche un altro problema che non avevo individuato: se per qualche motivo il tuo script non dovesse riuscire a raggiungere il server ospitante il file, smetterà di funzionare.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
In parte, e in parte dalla latenza della connessione.


Fattori del tutto imprevedibili: il PC di uno sviluppatore infetto da spyware o chissà che altro, e improvvisamente tutti i siti dei clienti smettono di funzionare o, peggio ancora, fungono da veicolo per la distribuzione di software dannoso. Non è un evento per niente raro.

Qualche altro articolo che scoraggia questa tecnica:

L'ultimo articolo porta alla luce anche un altro problema che non avevo individuato: se per qualche motivo il tuo script non dovesse riuscire a raggiungere il server ospitante il file, smetterà di funzionare.
Ripeto, non è delle migliori, ma è possibile fare anche cosi per piccoli progetti con siti sicuri.
Gli spyware o altri software malevoli simili ci sono se l'utente è un utonto, sennò è facilmente evitabile.

Comunque se avesse solo lati negativi sarebbe già stata tolta, io ho solo fatto vedere che c'è anche quella possibilità.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Purtroppo la presenza di lati negativi non è qualcosa da tenere in considerazione nell'ecosistema PHP. Ci sono state diverse feature che presentavano solo lati negativi (register_globals e magic_quotes_gpc solo per dirne alcune) e non sono state rimosse per lungo tempo. Nello specifico nessuna delle due che ho citato è stata ancora tolta (register_globals è stata rimossa nella 5.4 che ancora non è usata da nessuno).
 
Ultima modifica:

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Purtroppo la presenza di lati negativi non è qualcosa da tenere in considerazione nell'ecosistema PHP. Ci sono state diverse feature che presentavano solo lati negativi (register_globals e magic_quotes_gpc solo per dirne alcune) e non sono state rimosse per lungo tempo. Nello specifico nessuna delle due che ho citato sono ancora state tolte.
Sono state tolte dalla 5.4 entrambe mi pare, inoltre quelle appartengono alla vecchia generazione(procedurale e only mysql).

Comunque per quanto sia criticata (allow_url_include), non la trovo cosi pericolosa, forse è l'abitudine di molti a non fare controlli ad averla resa tale, d'altronde non sarebbe ancora cosi diffusa l'sql injection se ciò che ho detto non fosse vero.
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Includere file php in altro file php, evitando l'html del primo... PHP 0
L includere file asp da altro server Classic ASP 2
I asp | includere un file, indirizzo depositato in un db Classic ASP 0
L includere file inc.*.php in automatico PHP 1
M [PHP] Includere file esterno PHP 0
localhost.nicola Includere file HTML/TXT su script php PHP 3
C Includere file Javascript 2
A creazione file js da includere in un documento html Javascript 6
V Usa la libreria "phpgraphlib.php" problemi nell'includere altri file PHP 2
nim includere file scelto casualmente da array PHP 10
B includere file xml in file php PHP 1
R Includere elementi array fra apici PHP 1
felino [WordPress] [Woocommerce] Ritiro in zona: includere servizio aggiuntivo optional WordPress 0
F includere parte html in index.php PHP 5
M [PHP] Includere solo il risultato di una variabile PHP 2
S Includere in App Ibrida informazioni da Wikipedia jQuery 8
J Includere css nel Child-Theme WordPress 1
G Includere script altro sito PHP 2
M includere pagina con script in un'altra PHP 2
A includere form sito esterno nel proprio PHP 1
J Includere una variabile in una costante? PHP 1
L problema con get per includere pagine dal database PHP 4
D Includere quotazione metalli in real time sul proprio sito PHP 1
borgo italia Includere jQuery jQuery 1
M includere animazione flash in pagina html Flash 1
M includere pagina a seconda della scelta Javascript 1
S Includere una pagina con JavaSript Javascript 14
E fpdf salvare e aprire il file PHP 4
felino [Windows 10] Scompare icone, file e collegamenti sul desktop Windows e Software 0
S passare un valore da un form a un file .php con metodo post PHP 4
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
G file CSS contenente variabili HTML e CSS 1
M Creare traccia di download file sul server HTML e CSS 2
I elimina file PHP 1
I cerca file sottocartella unlink file PHP 0
I sessione username scarica file PHP 1
S Aggiornare percorso file collegati MS Access 0
I lista file sottocartella elimina file PHP 3
F comando di inclusione file audio in I-Pad non funziona HTML e CSS 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
I visualizza file sottocartella elimina singolo file PHP 1
I caricamento file in sottocartella nome utente PHP 3
I cartella sottocartella apri o scarica file pdf PHP 1
K Sfondo nuovo file Photoshop 0
C Wp-admin a file php WordPress 5
G Importazione file .sql Web Server 0
csi Inviare file jpg in locale alla stampante con php PHP 0
otto9due Proteggere una cartella e file con password tramite .htaccess e .htpasswd Web Server 0
MarcoGrazia HTML5 <picture> e i file source HTML e CSS 2
MarcoGrazia criptare un file PHP 2

Discussioni simili