Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 24
  1. #11
    Ciao Daniele.. infatti.. non era mia intenzione aprire un nuovo thread
    Grazie per la risposta rapidissima e precisa. Ora mi è chiaro che c'è la possibilità di includere pagine remote, e da quanto ho capito il test
    Codice PHP:
    $p!=basename($p
    dovrebbe scongiurarla in quanto dovrebbe escludere sottodirectory e/o schema.
    La cosa che non mi è chiara è il commento di Fabio Heller:

    Volendo essere fiscali questo non esclude inclusioni da altri siti (porzioni di hard-disk) sullo stesso server
    Ciao,
    Alessandro

  2. #12
    si $p != basename($p) risolve il problema

    fabio si riferisce al fatto di includere file php che sono presenti sul server web ma stanno su siti differenti...

    se il tuo sito sta sotto

    /var/web/httpd/vhosts/ciccio.it/www/htdocs

    e io volessi includere un file che sta in

    /var/web/httpd/vhosts/franco.com/www/htdocs

    giocherellando con i .. e le slash dovrei arrivarci

    il codice di andrea è un po estremo, perché fa un sacco di lavoro inutile

    in realtà basta un

    codice:
    if ($_GET['page'] != basename($_GET['page'])) {
      die('TENTATIVO DI HACKING!!!');
    }
    
    require_once("pagine/page.{$_GET['page']}.php");
    se poi si vuol verificare se il file esiste...
    prima di require_once si può mettere

    $_GET['page'] = file_exists("pagine/page.{$_GET['page']}.php") ? $_GET['page'] : 'home';

    cosi viene caricato il modulo home se il modulo richiesto non esiste

    poi la cosa si espande quasi all'infinito perché su questo concetto si basano i CMS, ovviamente il concetto è quello alla base ma l'applicazione è nettamente diversa......però siamo li
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  3. #13
    [supersaibal]Originariamente inviato da daniele_dll
    giocherellando con i .. e le slash dovrei arrivarci
    [/supersaibal]
    Ma basename() elimina tutti i punti e gli slash precedenti il nome, quindi non capisco nemmeno io l'obiezione di fabio (era riferita proprio al basename). :master:

  4. #14
    [supersaibal]Originariamente inviato da skidx
    Ma basename() elimina tutti i punti e gli slash precedenti il nome, quindi non capisco nemmeno io l'obiezione di fabio (era riferita proprio al basename). :master: [/supersaibal]


    ho spiegato quello che aveva detto fabio
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  5. #15
    Chiudo
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  6. #16
    [supersaibal]Originariamente inviato da gm
    Chiudo [/supersaibal]
    Unisco che è meglio
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  7. #17
    [supersaibal]Originariamente inviato da daniele_dll
    il codice di andrea è un po estremo, perché fa un sacco di lavoro inutile [/supersaibal]
    lavoro inutile ??? ... si parla tanto di sicurezza poi un codice non ridondante che si auto-protegge viene considerato estremo e che fa lavoro inutile ???


    .... ora dimmi quale punto di questo codice e' inutile ... o meno sicuro di altri ...


    codice:
    // pagina di default
    $p = 'main';
    
    // controllo che $_GET['page'] sia settato e che sia diverso
    // dalla pagina inclusa di default
    if( isset( $_GET['page'] ) == true && $_GET['page'] != $p ) {
    
        // evito gli slashes, puntini e quant' altro ...
        $p = &basename( $_GET['page'] );
    
        // controllo che il file esista e che sia diverso
        // da questa pagina ( piu' portabile, meno vincoli )
        if( file_exists( $p.'.php' ) == false || 
        $p.'.php' == basename( $_SERVER['SCRIPT_FILENAME'] ) )
            // se e' cosi' mando la pagina di errore
            $p = 'error';
    }
    
    // includo il timplate
    include($p.'.php');

    ... son 3 righe caxx ... estremo e inutile ...
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #18
    [supersaibal]Originariamente inviato da andr3a
    lavoro inutile ??? ... si parla tanto di sicurezza poi un codice non ridondante che si auto-protegge viene considerato estremo e che fa lavoro inutile ???


    .... ora dimmi quale punto di questo codice e' inutile ... o meno sicuro di altri ...


    codice:
    // pagina di default
    $p = 'main';
    
    // controllo che $_GET['page'] sia settato e che sia diverso
    // dalla pagina inclusa di default
    if( isset( $_GET['page'] ) == true && $_GET['page'] != $p ) {
    
        // evito gli slashes, puntini e quant' altro ...
        $p = &basename( $_GET['page'] );
    
        // controllo che il file esista e che sia diverso
        // da questa pagina ( piu' portabile, meno vincoli )
        if( file_exists( $p.'.php' ) == false || 
        $p.'.php' == basename( $_SERVER['SCRIPT_FILENAME'] ) )
            // se e' cosi' mando la pagina di errore
            $p = 'error';
    }
    
    // includo il timplate
    include($p.'.php');

    ... son 3 righe caxx ... estremo e inutile ... [/supersaibal]
    tonto quando ho risposto ancora il thread era separato e non l'avevo visto questo...quindi pensavo al tuo codice di 14908763219876432 righe che si ciclava tutti i file della dir ecc ecc ecc ... questo va più che bene!

    PS: GUARDA CHE SE METTI LA & DAVANTI ALLE FUNZIONI CHE TORNANO STRINGHE NON FAI NULLA!!! QUINDI E' INUTILE CHE LA & LA BUTTI IN QUASI QUALSIASI FUNZIONE CHE RICHIAMI!!!!!!

    argh...scusate per lo sfogo...ma vedere troppe & commerciali mi faceva pensare alla marmotta che confezionava la cioccolata e io adoro la cioccolata
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  9. #19
    [supersaibal]Originariamente inviato da daniele_dll
    PS: GUARDA CHE SE METTI LA & DAVANTI ALLE FUNZIONI CHE TORNANO STRINGHE NON FAI NULLA!!! QUINDI E' INUTILE CHE LA & LA BUTTI IN QUASI QUALSIASI FUNZIONE CHE RICHIAMI!!!!!!

    argh...scusate per lo sfogo...ma vedere troppe & commerciali mi faceva pensare alla marmotta che confezionava la cioccolata e io adoro la cioccolata [/supersaibal]
    avevo pensato la stessa cosa

    un'altra soluzione bella in php5 è il foreach con riferimento...

  10. #20
    [supersaibal]Originariamente inviato da daniele_dll
    PS: GUARDA CHE SE METTI LA & DAVANTI ALLE FUNZIONI CHE TORNANO STRINGHE NON FAI NULLA!!! QUINDI E' INUTILE CHE LA & LA BUTTI IN QUASI QUALSIASI FUNZIONE CHE RICHIAMI!!!!!!
    [/supersaibal]
    [eidtato]
    edito perche' non riesco a trovare un esempio valido ... ma ti assicuro che in PHP5 la & e' ben diversa da quella in PHP4


    mdsjack ... poi te l' aevo gia' detto ... potevi commentarmi l' ultima risposta dell' altro 3D invece di pensare e' inutile, visto che come avrai notato non e' cosi' inutile ...
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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 © 2026 vBulletin Solutions, Inc. All rights reserved.