Visualizzazione risultati 1 fino 14 di 14

Discussione: Proteggere le pagine di inclusione dall'accesso diretto

  1. #1
    Guest

    Predefinito Proteggere le pagine di inclusione dall'accesso diretto

    Ho una pagina (index.php) da cui richiamo di volta in volta con dei require altre pagine che mi interessano (esempio pippo1.php , pippo2.php e via dicendo).

    Il problema è che io queste altre pagine voglio che siano accessibili solo ed esclusivamente attraverso i require di index.php, e voglio che non siano accessibili linkandole direttamente dall'utente.

    Vorrei che se si provasse accedere direttamente alle pagine pippo, venga effettuato un redirect diretto alla home page oppure che l'utente veda solo pagine bianche..

    Una idea in mente su come risolvere il problema ce l'ho, cioè sfruttare una qualche variabile che solo index.php passa alle altre pagine ma ho qualche dubbio sulla sicurezza di tale metodo.. voi come fareste?

  2. #2
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    io uso anche il tuo metodo,cioè filtrare un numero in modalità random a 8 cifre che passo in una variabile globale.
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  3. #3
    L'avatar di SolitaryExplorer
    SolitaryExplorer non è connesso Utente storico
    Data registrazione
    10-08-2005
    Residenza
    Veneto
    Messaggi
    1,949

    Predefinito

    Premesso che chi vede una tua pagina php non può vedere che operazioni lato server fai (in questo caso delle inclusioni).
    Tanto meno possono accedervi i motori di ricerca, a meno che non sia tu a dirgli dove sono.
    Ad ogni modo potresti risolvere con un sistema che impedisca il link diretto alle pagine a meno che non si provenga da un'altra pagina del tuo dominio.
    Lo potresti fare utilizzando il mod_rewrite in .htaccess.
    Al momento ti sto scrivendo dal cellulare, ma quando arrivo a casa accendo il pc e ti scrivo la mia soluzione.

    Ciauz!
    Non offro assistenza privata. / Se vuoi anche tu una userbar come queste, basta chiedere.


  4. #4
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Oppure basta che metti le pagine da includere in una cartella separata che bloccherai con il lucchetto di AlterVista.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  5. #5
    Guest

    Predefinito

    Il metodo che hai in mente è abbastanza efficace, solo che io lo farei usando una costante anzichè una variabile, infatti le costanti sono più sicure, prima di tutto perchè non sono modificabili tramite url.

    Nella index valorizzi la costante, e nelle pagine che includi fai il controllo di questa costante.


    Ciaooooo!!!!

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da attorianzo
    Vorrei che se si provasse accedere direttamente alle pagine pippo, venga effettuato un redirect diretto alla home page oppure che l'utente veda solo pagine bianche..

    Una idea in mente su come risolvere il problema ce l'ho, cioè sfruttare una qualche variabile che solo index.php passa alle altre pagine ma ho qualche dubbio sulla sicurezza di tale metodo.. voi come fareste?
    Perché perdere tempo con le varibili? C'è PHP_SELF che ti semplifica la vita:

    Codice PHP:
    if (eregi("pippo.php",$_SERVER['PHP_SELF'])) {
    Header("Location: ./../index.php");
    die();
    }
    Metti quel codice all'inizio della pagina e cambia pippo.php nel nome esatto della pagina php che vuoi "proteggere" da sguardi indiscreti.

    Bye

  7. #7
    Guest

    Predefinito

    Grazie a tutti per i vostri interventi:

    @Xsescott: eh gia.. Il prob. è che non so.. non mi sento abbastanza al sicuro con questa soluzione..

    @Solitary: hai ragione ma il problema è che di quello a cui sto lavorando distribuirò il codice (è un CMS). Preferirei evitare htaccess dato che non tutti lo implementano nei loro spazi web.

    @funcool: preferirei evitare la soluzione del lucchetto.. Per qualcuno potrebbe risultare complicato lucchettare le cartelle nel proprio sito, e non so se tutti gli hosting (free) permettono di lucchettare proprie cartelle..

    @Debug: interessante.. Il problema della variabilina è proprio quello che se registerglobals è off può essere passata dall'esterno ed accedere comunque dall'esterno.. Si credo che con una costante risolverei il problema..

    @AngelinoAnt: Interessante anche questo.. Non avevo pensato di filtrare con una espressione regolare la URL... yumm....

    Credo che la soluzione piu semplice nel mio caso sia quella proposta da Debug...

  8. #8
    Guest

    Predefinito

    Io uso questo check

    Codice PHP:
    if (realpath(__FILE__) == realpath($_SERVER['SCRIPT_FILENAME'])) die();

  9. #9
    Guest

    Predefinito

    neoscript il tuo metodo è veramente perfetto... Risparmia persino la "fatica" di dovere impostare un define con una costante...

    Ho fatto qualche prova però, ed ho visto che scrivere:

    if (realpath(__FILE__) == realpath($_SERVER['SCRIPT_FILENAME'])) die();

    oppure:


    if(__FILE__ == $_SERVER['SCRIPT_FILENAME']) die();

    è esattamente la stessa cosa..

    Sembra che __FILE__ restituisca gia il percorso completo del file..

  10. #10
    Guest

    Predefinito

    __FILE__ restituisce il file "padre" che lo evoca, $_SERVER['PHP_SELF'] il nome del vero file che viene, eventualmente, incluso.


    Ciaooo!!!!!!

  11. #11
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    ma che devi proteggere dei dati bancari?:D
    scusa ma penso che una di qualsiasi di queste soluzioni sia più che sicura..pgiusto perchè..anche se attivassi la mia soluzione,e se ci fosse il registerglobals a off quante possibilità ci sono di scoprire un numero random a 8 cifre? -.-°
    Che poi che non è il metodo migliore lo sò anche io dato che esistono funzioni come quelle che ti hanno proposto,però alla fine come sicurezza siamo + o - li..
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da Xsescott
    ma che devi proteggere dei dati bancari?:D
    scusa ma penso che una di qualsiasi di queste soluzioni sia più che sicura..pgiusto perchè..anche se attivassi la mia soluzione,e se ci fosse il registerglobals a off quante possibilità ci sono di scoprire un numero random a 8 cifre? -.-°
    Che poi che non è il metodo migliore lo sò anche io dato che esistono funzioni come quelle che ti hanno proposto,però alla fine come sicurezza siamo + o - li..
    Comprensibilissimo il tuo punto di vista.. Già attuavo un sistema tipo quelli proposti a protezione del link diretto alle pagine, ma in fin dei conti le sfaccettature della sicurezza sono tante e vale sempre la pena di discuterne.

    In fin dei conti si tratta solo di una riga di codice, le soluzioni sono diverse, magari discutendone insieme si trova il sistema migliore..

    E soprattutto, trattandosi di un CMS con sorgenti aperti, ogni minima vuinerabilità può diventare pesantissima per tutti i siti che lo usano.

  13. #13
    Guest

    Predefinito

    $_SERVER['SCRIPT_FILENAME'] con alcune installazioni di PHP non fatte per bene può dare problemi. Stai attento ...

  14. #14
    Guest

    Predefinito

    Ti ringrazio (vi ringrazio tutti, anche a Solitary, che per rispondermi dal telefonino gli deve essere costato un fuoco..).

    La soluzione che per il momento ho scelto di adottare è quella di mettere in testa ad ogni paginetta da includere la riga:

    if(!defined("ACCESSO")) header("Location: ../index.php");

    Ovviamente nella index.php (cioe la pagina mamma che poi includera le altre) ho definito "ACCESSO"..

    Mi sembra la soluzione piu semplice e nel contempo sicura... (credo..)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •