Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    scrittura file: e se faccio il giro da FTP?

    è un discorso teorico, quindi tralasciamo le considerazioni sulle prestazioni (ovviamente penalizzanti).

    C'è uno script php "pippo", e il medico gli ha prescritto di scrivere un file in una certa directory.
    Supponiamo che su questa directory non si possano impostare permessi in scrittura per tutti, per sicurezza.

    Il nostro pippo allora prende la porta di servizio, si connette via ftp al sito (con i dati che noi stessi usiamo per caricare pippo sul server) e scrive così il file, fa cioè un upload dal server a se stesso.

    Tecnicamente la cosa sarebbe fattibile?

    Correggetemi se sbaglio, ma non credo esistano problemi di sicurezza a tenere la password ftp in uno script. Se uno arriva a leggere il sorgente di quello script è già troppo tardi, se ne fa una sega del login ftp.

  2. #2
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    Se il modulo php è stato compilato con il supporto FTP penso di sì, che sia possibile...nel senso che i permessi sono usati dal server solo come risposta al protocollo HTTP e quindi con l'FTP li ignori.

    Su php.net c'è un gran numero di applicazioni malate


    Alcuni addiritturra hanno implementato dei semplici client FTP in locale per farsi gli upload automaticamente.

  3. #3
    [supersaibal]Originariamente inviato da JHammer
    Se il modulo php è stato compilato con il supporto FTP penso di sì, che sia possibile...[/supersaibal]
    Ma forse anche con le normali funzioni sui file, se è abilitato l'uso dei protocolli esterni.

  4. #4
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    Da quello che dice php.net dovresti avere sulle phpinfo la dicitura --with-ftp (trovata sul mio host).

  5. #5
    potrebbe essere fattibile anche senza, ma con allow_url_fopen attivo.
    http://www.php.net/manual/en/wrappers.ftp.php

    Aldilà della messa in pratica, come idea vi sembra valida?

    dopo gli esami farò dei benchmark, sicuramente è più lenta di una normale scrittura su filesystem però, essendo origine e destinazione sullo stesso server, non ci dovrebbe essere il rallentamento dovuto al trasferimento remoto, i file dovrebbero girare direttamente sulla rete locale del server, almeno credo. :master:

  6. #6
    si, lo puoi fare... è una soluzione che uso anche io, e che tra l'altro offre svantaggi in prestazioni, ma essendo una pratica, diciamo così, da "pannello di amministrazione", ci può stare... un po' estrema cmq!

    un'altra possibilità è usare il PHP-CGI in modo da attibuire al tuo script lo stesso UID di apache e consentirgli di fare ciò che vuole... ovviamente qui però serve la collaborazione dell'admin del server!


    r@p

  7. #7
    [supersaibal]Originariamente inviato da ^r@pTuS^
    un'altra possibilità è usare il PHP-CGI in modo da attibuire al tuo script lo stesso UID di apache e consentirgli di fare ciò che vuole... ovviamente qui però serve la collaborazione dell'admin del server![/supersaibal]
    Sì, l'avevo considerata ma la cosa mi interessava per una applicazione da distribuire, e non tutti (quasi nessuno in verità) hanno la possibilità di farsi attivare un php-cgi, e mettere mano ai permessi e proprietari è una cosa complicata per l'utente comune.

    Invece per la soluzione ftp è sufficiente che il server supporti il passive mode, cosa che praticamente fanno quasi tutti, me lo confermi?

  8. #8
    yeppa!!!

    questo è il metodo di una mia classe che fa la creazione dinamica delle sottocartelle

    Codice PHP:
    function mkdirViaFTP($subfolders=Array()) {
        if(
    $subfolders && count($subfolders) > 0) {
            if (!
    $ftp ftp_connect('IP_ADDRESS'))        return "can't connect";
            if (!
    ftp_login($ftp,'USER','PASS'))    return "can't login";
            if (!
    ftp_chdir($ftp,'/public_html'))            return "can't open dir";

            foreach (
    $subfolders as $folder) {
                if (
    $folder) {
                    
    $this->destpath $this->destpath.$folder.'/';
                    @
    ftp_mkdir($ftp$this->destpath);
                    
    ftp_site($ftp"CHMOD 777 $this->destpath");
                }
            }

            
    $quit ftp_quit($ftp); // CHIUDE LA CONNESSIONE AL SERVER;
        
    }
    // mkdirViaFTP 

    byuz!

    r@p

  9. #9
    ma grazie, come inizio mi sarà sicuramente utile

  10. #10
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    ehm... con almeno php4.3 fai

    $fp = fopen("ftp://userass@ftp.server.it/miacartella/miofile.txt");



Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.