Visualizzazione risultati 1 fino 14 di 14

Discussione: Sicurezza dopo login

  1. #1
    Guest

    Predefinito Sicurezza dopo login

    Ciao, fino a poco tempo fa' utilizzavo questo sistema per effettuare il login con sessioni: praticamente dopo avere esguito il login (username,password), con le sessioni memorizzavo l'ID dell'utente (che risiedeva nel db), a questo punto se php riconosceva un id (non specificando quale, poteva anche nn essere presente nel db, ma cmq un numero diverso da 0) lasciava accedere a determinate pagine...
    questo era il sistema che mi ero creatoe che utilizzavo,.. ora, questo sistema nn é molto sicuro vero? in che modi ad esempio potrebbero oltrepassare la mia siscurezza?

    Potreste suggerirmi qualche metodo (se lo avete) per mantenere sicuro il vostro sito? con sessioni, cookies ecc?

  2. #2
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Io come sistema di login utilizzo l'HTTP Auth però se dovessi utilizzare le sessioni farei in modo che memorizzi l'user e la password digitate dall'utente in una sessione e ogni volta che si cerca di aprire un documento protetto farei in modo che PHP controlli se l'user e la password sono giusti, in caso contrario mostrerei un messaggio o un errore 401/403.
    Apprezzi l'aiuto? Offrimi un caffè!

  3. #3
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    nah, il metodo usato è quello comunemente utilizzato con le sessioni, ed è decentemente sicuro - sicuro quando le sessioni: se qualcuno può "rubare" i biscotti, allora può rubare le sessioni, ma a quel punto nessun altro sistema è "più sicuro".

    Il lato migliore del metodo è che utente e password vengono comunicate una volta sola, mentre il resto delle transazioni è fatto usando l'id della sessione, che è sempre un dato riservato, ma con una durata limitata, e può essere annullato. L'id è associato unicamente con le informazioni dell'account, e questo ti basta a conoscere i permessi dell'utente, senza che altre informazioni riservate debbano passare per la rete (insicura).

  4. #4
    Guest

    Predefinito

    Questo post serve anche a me...mi fate un esempio (dreadnaut e miki)??
    Così capisco quello che volete dire :P

  5. #5
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    notare che stiamo dicendo due cose diverse... miki92 suggerisce di controllare (inutilmente) utente e password ad ogni pagina, mentre il metodo solitamente utilizzato è di controllarle solo al momento del login/autenticazione. Non c'è nessun vantaggio nel controllarle ogni volta: se le hai memorizzate nella sessione, beh, le hai sul server, a cosa serve ricontrollarle visto che non possono cambiare? se te le fai rispedire ogni volta dal client, stai trasmettendo dati su una connessione non sicura mille volte, invece di una volta sola. Utilissimo, ma a qualcun'altro

    L'uso "corretto" delle sessioni per il login è quindi: l'utente invia username e password, il server le confronta con gli utenti autorizzati e se sono corrette, nelle variabili di sessione viene salvato o un identificatore che punta alle informazioni utente (nel database?) oppure direttamente le informazioni dell'utente - e.g. a quali pagine è autorizzato ad accedere. Essendo memorizzate nella sessione, non vengono mai trasferite all'utente, e non appaiono sulla rete.

    Ciò che viene trasferito è il cookie della sessione, e per questo è l'anello debole di questo sistema di sicurezza. Chiunque possa leggere questo cookie può autenticarsi con il server come l'utente vero - finché la sessione non viene chiusa (da cui l'importanza del log out)

  6. #6
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    Chiunque possa leggere questo cookie può autenticarsi con il server come l'utente vero - finché la sessione non viene chiusa (da cui l'importanza del log out)
    Scusa il probabile OT ma il logout non serve a far terminare una o più sessioni prima del loro tempo? Cioè la sessione "scade" quando viene chiuso il browser quindi il logout serve solo per far terminare prima la sessione giusto?
    Apprezzi l'aiuto? Offrimi un caffè!

  7. #7
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    la sessione termina quando scade il cookie, e se il cookie è settato per scadere dopo 6 mesi, la sessione dura sei mesi. Il server può chiuderla prima, facendola scadere server-side, ma si parla solitamente di ore.

    In generale quindi, meglio farla terminare il prima possibile, invece di lasciarla aperta senza motivo no?

  8. #8
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Ah, allora ciò che so non è giusto? Cioè io so che con la chiusura del browser automaticamente scade la sessione.
    Va beh grazie so una cosa in più
    Apprezzi l'aiuto? Offrimi un caffè!

  9. #9
    Guest

    Predefinito

    quindi il mio controllo: se l'id della sessione é diverso da 0 o null l'utente ha accesso.. é giusto e sicuro?

  10. #10
    Guest

    Predefinito

    Io di solito quando uso le sessioni faccio una cosa del genere:
    Codice PHP:
    session_start();
    $_SESSION["verify"] = "y";
    session_register("verify");

    if(@
    $_GET['p'] == "riservata") {
    if(
    $_SESSION["verify"] == "y") {
    echo
    $_SESSION["verify"];
    } else {
    echo
    "<b>Devi fare il Login</b>";
    }
    Ciaoooooo!

  11. #11
    Guest

    Predefinito

    penso sbagli, perché se tu salvi l'ID dell'utente nella sessione sai tutto di lui.. quindi sai a cosa lui ha accesso...

    ciao!

  12. #12
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da bluster Visualizza messaggio
    quindi il mio controllo: se l'id della sessione é diverso da 0 o null l'utente ha accesso.. é giusto e sicuro?
    qua c'è della confusione nell'aria. Quando dici "id della sessione" intendi l'id dell'utente direi - l'id della sessione (o SID) è contenuto nel cookie (o nel parametro) restituito all'utente. L'id dell'utente, che salvi nella sua sessione, invece lo identifica univocamente. Se lo salvi nella sessione solo quando l'autenticazione è stata corretta, allora si, è un metodo sicuro*

    (*) poi se la tua implementazione ha buchi di altro genere, quello non si sa

    @sIM: session_register() non serve a quello per cui mi sembra tu lo usi, controlla la guida.

  13. #13
    Guest

    Predefinito

    allora, riprendiamo..
    io faccio così: effettuo il login, interrogo il database per sapere qual'é l'ID dell'utente che si é loggato, salvo questo ID nella sessione (così so sempre chi é), poi effettuo un controllo di questo tipo (un po'semplificato, su una pagina dove tutti gli utenti hanno accesso):
    Codice PHP:
    if ($_SESSION['ID'] != NULL) {
    //pagina da visualizzare
    } else {
    echo
    'Devi effettuare il login!';
    }
    é giusto e sicuro il sistema?

    poi avrei una seconda domanda, io vorrei proteggere determinati file degli utenti (PDF, JPG, GIF e molti altri), in tal modo che se qualcuno non loggato scriva http://miosito.com/img/immagine.jpg questo non abbia accesso all'immagine, il problema é che non so come bloccarlo, siccome non ha estensione php, quindi devo tentare via htaccess (che non so usare)? ma come faccio se nn posso passarli l'ID dell'utente?

    Grazie..Ciao!

  14. #14
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    quel != NULL è molto C-oso, e può essere sostituito da un isset($_SESSION['ID']) magari.

    Nel ramo dell'else puoi mettere una redirezione alla pagina di login se vuoi, del tipo
    Codice PHP:
    else {
    header('Location: /login.php');
    die();
    // niente output dopo Location, terminiamo l'esecuzione!
    }
    per quanto riguarda i file, dovresti mettere i file in directory protette via lucchetto dal pannello, e scriverti una pagina in php che faccia da "ponte" e solo per gli utenti autorizzati legga e restituisca i file in questa directory, introdotti dal MIME-Type corretto. Un gran rigiro e sofferenza secondo me, ripensa al problema. Tieni anche conto del regolamento di AlterVista e del punto sul materiale nascosto/inaccessibile.

Regole di scrittura

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