Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Jack991
    Registrato dal
    Oct 2006
    Messaggi
    156

    Le SESSION di php come autenticazione sono sicure?

    Salve...

    questa volta una domandina riguardo le SESSION di PHP.

    Le SESSION sono un metodo sicuro per autenticare un utente?
    E' possibile per un ipotetico cracker, diciamo, falsare il vettore $_SESSION, che pur sempre rimane una variabile del server?

    Il metodo che uso io per autenticare le pag. è il seguente:

    codice:
    <?php session_start(); ?>
    
    ...
    
    <?php 
    
    if(isset($_SESSION['autenticato']) && $_SESSION['autenticato'] == "si" && isset($_SESSION['nomeutente'] )){ 
    
    ... vedi contenuto protetto ...
    
    }else{ 
    
    ...form di login ...
    
    }
    
    ?>
    chiaramente $_SESSION['autenticato'] e $_SESSION['nomeutente'] vengono settati una volta accertati che i dati di login siano corretti.

    Quanto è sicuro un metodo del genere?

    Qualche hint/trick da consigliare?

    un grazie in anticipo
    Errare n00bbium est, perseverare autem hackerum

  2. #2
    Utente di HTML.it L'avatar di giennekappa
    Registrato dal
    Oct 2010
    Messaggi
    54
    Il php è un linguaggio sicurissimo. Gli unici problemi possono essere i programmatori!

    Giusto un appunto.
    Sarebbe bastato anche solo:
    if( isset($_SESSION['nomeutente'] ) ) {
    ..ok..
    }


    e poi non ho capito perché un doppio controllo su:

    if( isset($_SESSION['autenticato']) && $_SESSION['autenticato'] == "si" )

    perché basterebbe anche solo:
    if( $_SESSION['autenticato'] == "si" )

    logicamente se usi quello che ho scritto nella riga qui sopra, quando l'utente fa il logout
    gli fai fare un session destroy e un unset($_SESSION['autenticato'])
    CIAO!
    I make the game and you play.

  3. #3

  4. #4
    In genere sono ragionevolmente sicure. MA...
    Se sei su hosting condiviso e se il server non è perfettamente configurato, possono essere altamente insicure.
    Questo perché su hosting condiviso è possibile che tu divida il server con un altro utente. Questo utente può usare le sessioni nello stesso tuo modo (inconsapevolmente oppure per attaccarti volontariamente).
    SE il Server non divide il path dove registra le sessioni a seconda degli utenti, succede che le sessioni sono salvate in un unico calderone. Un malintenzionato può loggarsi nell'altro sito, sfruttare l'id di sessione, crearsi un cookie per il tuo usando l'id dell'altro ed il gioco è fatto. Ovviamente se tu usi chiavi di sessioni molto banali (autenticato=1, admin=1 ecc) è tutto piu' semplice.

    E' difficile che al giorno d'oggi un sistemista di un hosting (decente) non stia attento a questo... ma non si sa mai. =)


    se imposti il name di una sessione aumenti di un livello la tua sicurezza.
    Oppure ancora puoi non usare direttamente le chiavi ma un array, in modo da poter complicare il tutto, es:

    Codice PHP:
    $_SESSION['miaparolasegreta']['admin']=1
    in questo modo se non esiste l'array $_SESSION['miaparolasegreta'] distruggi la sessione e richiedi il login perché probabilmente qualcuno si è creato la session "da un'altra parte".
    Se utilizzi un database ancora meglio dovresti evitare cose tipo: admin=1, ma puntare a un id (meglio RID) di un utente salvato nel database.

    Ripeto: è pignoleria, perché dovrebbero verificarsi troppi "SE" per poter fare un attacco del genere... ma non si sa mai, no?

  5. #5
    Utente di HTML.it L'avatar di Jack991
    Registrato dal
    Oct 2006
    Messaggi
    156
    celeri e puntuali, grazie mille!
    Errare n00bbium est, perseverare autem hackerum

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    51
    Sempre in merito di sicurezza, siccome è da poco che mi sono affacciato al mondo php
    volevo chiedervi se in un sistema di autenticazione come quello proposto ,qualcuno ammesso che conoscesse il nome della variabile di sessione potrebbe settarla direttamente via url?
    esempio:
    http://www.sito.it/login.php?$_SESSION['autenticato'] =si

  7. #7
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    Originariamente inviato da websun
    Sempre in merito di sicurezza, siccome è da poco che mi sono affacciato al mondo php
    volevo chiedervi se in un sistema di autenticazione come quello proposto ,qualcuno ammesso che conoscesse il nome della variabile di sessione potrebbe settarla direttamente via url?
    esempio:
    http://www.sito.it/login.php?$_SESSION['autenticato'] =si
    anche se fosse consntito poi dovrebbe fare $_GET['$_SESSION['autenticato']'] e non direttamente $_SESSION['autenticato']

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    218
    Originariamente inviato da websun
    Sempre in merito di sicurezza, siccome è da poco che mi sono affacciato al mondo php
    volevo chiedervi se in un sistema di autenticazione come quello proposto ,qualcuno ammesso che conoscesse il nome della variabile di sessione potrebbe settarla direttamente via url?
    esempio:
    http://www.sito.it/login.php?$_SESSION['autenticato'] =si
    No.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    51
    Scusate se insisto mi sapete dire a livello teorico perchè nn può succedere??

  10. #10
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    intanot perchè non si possono usare gli apici gel get poi ti ho spiegato sopra cosa dovresti fare per recuperare quella variabile dal get anche se fosse consentito

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.