Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    lavorare con i cookie o con le sessioni ?

    Salve a tutti,

    vorrei avere qualche info sull'utilizzo dei cookie.. mi spiego meglio.

    Il mio script php funziona perfettamente con $_SESSION.. ma vorrei provare a farne uno con i cookie.

    Nel mio script php che controlla l'accesso ad un'area riservata per prima cosa faccio controllare che user e pass siano inseriti correttamente.

    se tt va ok vorrei memorizzare i valori (adesso li memorizzo in sessione) in un cookie.
    leggendo un po' in qua e in la ho visto come funzionano e per questo vorrei chiedere:

    1) se ho bisogno di memorizzare più di un valore nel cookie come posso fare ?! Devo fare tanti setcookie oppure posso usarne uno solo e mettere più valori ?!

    2) come gestisco il tempo di valitdà del cookie ?!

    ad esempio

    il mio script se tutto va bene dopo il controllo sul db scrive
    setcookie('LOGIN', $ID_UTENTE, time()+$TEMPO);

    come controllo il tempo una volta settato !?

    ed ancora... se oltre a "LOGIN" voglio memorizzare il nome dell'utente devo fare un altro setcookie('NOME', $nomeUtente); oppure posso utilizzare un unico setcookie !?

    Grazie mille!
    -------------------------
    ..::`DrUmM\n0`::..
    www.jonathandomenici.com

  2. #2
    Generalmente le sessioni sono considerate preferibili ai cookie (anche perché possono funzionare senza che il client accetti cookie passando il parametro dell'id della sessione via GET), quindi non so precisamente per cui tu voglia passare ai cookies.

    Comunque, per memorizzare più informazioni non c'è bisogno necessariamente di creare più cookie, per esempio puoi salvare un cookie "login" nel formato

    codice:
    username|password
    Dove password è ovviamente l'hash sha1/md5/etc... della password dell'utente e non la pass in chairo. Quando leggi il valore del cookie separi in base al "|" e hai sia user che pass.

    Non ho capito cosa chiedi, invece, per quanto riguarda il tempo. Una volta che il tempo è scaduto il cookie non risulta più settato, quindi non c'è bisogno di controllare nulla.
    Visita il mio blog e canale YouTube dedicati a programmazione web e sicurezza informatica.

  3. #3
    mettere direttamente solo l'md5 o lo sha1 della password, oggi, non è più sufficiente

    personalmente mi creo un bel digest ed utilizzo quello per riconoscere l'utente

    il digest è creato tramite hmac-sha512 ed è la combinazione del nome utente e della password (l'hmac effettua un'ulteriore codifica utilizzando una chiave)

    hash_hmac('sha512', $username . $password, $salt);
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Per rispondere alle domande principali iniziali direi...

    1) per mettere più valori puoi usare più setcookie con variabili diverse o più semplicemente memorizzare tutto ciò che vuoi in un array e usare un unico cookie con tale valore (es.: array('user' => '...', 'info' => '...', ...) e così via)
    2) se per "gestire" intendi come far "scadere" il cookie non devi far nulla... se setti un tempo di scadenza sarà il sistema ospite (il browser) ha "cancellarlo" alla scadenza

  5. #5
    non tentate di sostituire le sessioni con i cookie, perché i cookie provengono dal browser e quindi non sono informazioni affidabili per principio in quanto possono essere facilmente alterati

    inoltre scrivendo le informazioni dell'utente direttamente nei cookie (o nelle sessioni), se queste variano durante l'utilizzo del sito nel quale l'utente è loggato non verranno automaticamente aggiornate (è meglio leggerle ad ogni richiesta le info dell'utente dal db, tanto va verificato se esiste e/o se è ancora abilitati e quali sono i suoi permessi)
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  6. #6
    grazie per le esaurientissime risposte!!!

    a questo punto, chiedo a tutti..

    secondo voi qual'è il sistema migliore per l'autenticazione ?!

    sessione
    cookie
    sessioni su db

    grazie mille!
    -------------------------
    ..::`DrUmM\n0`::..
    www.jonathandomenici.com

  7. #7
    sessioni su db, le sessioni su disco di php sono, tecnicamente, condivise con tutti i vari siti web che girano sul server (a meno di specifiche configurazione dell'hoster, cosa che generalmente non è)

    ovviamente il cookie serve per memorizzare l'id di sessione
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    "migliore" da che punto di vista? della "sicurezza"? se in questo senso certo non i cookies... se poi per "sessioni su db" intendi registrare i dati di sessione in un db e non con gli automatismi del php dipende da altri fattori (es.: se il database è su un server condiviso con altri utenti terzi potrebbe essere più "sicuro" non poggiarsi ad esso), ma i livelli di differenza sono molto labili.

  9. #9
    quindi sessioni su db e id sessione sul cookie... ma a sto punto che me ne faccio della sessione sul db se tanto poi la metto nel cookie ?!

    il mio db è su una macchina mia, condivisa con solo altri miei siti... quindi le regole di accesso le faccio io e nessun altro...

    a questo punto io farei:

    loggare l'utente e scrivere una sessione su db.
    ad ogni pagina protetta fare il confronto fra l'id sessione (sul cookie) e quello scritto nel db, modificando la validità della sessione di nuovo per 30 minuti (ad esempio...)

    che ne dite ?
    -------------------------
    ..::`DrUmM\n0`::..
    www.jonathandomenici.com

  10. #10
    tu nel cookie metti solo un codice ... l'utente può alterare il codice ma non il contenuto

    l'utente in pratica potrebbe, POTENZIALMENTE, acquisire l'id di un altro utente ... ma per ridurre le probabilità al minimo si usano degli hash grandicelli, come ad esempio lo sha512, e si rigenera l'hash di sessione per ogni richiesta ... così da rendere la vita impossibile a chi vuol far danni

    purtroppo l'http è connection less, quindi il webserver non sa con certezza che tu ... sei tu ... perché la connessione viene chiusa e riaperta a rotazione, non c'è continuità

    il motivo per il quale si mette l'id di sessione nei cookie e proprio per "simulare" quella continuità

    ogni sessione ha una scadenza, non devi fare altro che ad ogni accesso aggiornare il timestamp (www.php.net/time ) presente sul database relativo all'ultima operazione svolta
    ovviamente prima verifichi se la sessione è valida (nel momento del caricamento) tramite un if del tipo
    if (time() > ultima_azione_sessione + (30*60)) { ... la sessione deve essere creata ex novo perché è scaduta ... }
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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.