Pagina 1 di 1

PHP & COOKIE: sicurezza.

Inviato: giovedì 11 settembre 2008, 18:38
da YourEmployer
Ciao a tutti.
Sto creando un'applicazione WEB in PHP e MYSQL.
Ho incentrato la gestione dell'inserimento dei messaggi sui cookies.
Quindi, una persona quando esegue il login, salva il cookie;
quando inserisce un messaggio viene verificata la presenza di questo cookie...eccetera.
Ora mi chiedo se questi cookies non possano essere compromessi, modificati.
Praticamente, al momento del login il mio sito crea un
setcookie("Texas",$_SESSION['nome'],time()+7200,"/");
Poi, per inserire i dati nel database viene controllato che sia settato questo cookie.
per modificare si controlla che il nome contenuto nel cookie sia uguale al nome dell'autore del messaggio.
nel cookie c'è l'username di chi esegue l'accesso.
se questo venisse modificato sarebbe un casino. è possibile che accada?

sarebbe un casino perchè ho segnato che chi ha $_COOKIE['Texas'] === "vincenzo2342" ha i poteri di amministratore.
Attendo chiarimenti,Ciao!

Re: PHP & COOKIE: sicurezza.

Inviato: giovedì 11 settembre 2008, 23:29
da danilo.rossini
Con i cookie è possibile poichè vengono memorizzati all'interno del browser del client come file di testo, un malintenzionato potrebbe quindi prelevare il cookie di un utente registrato al tuo sito direttamente sul computer del tuo utente (metti che riesca ad avere libero accesso al suo pc)..
Inotre attraverso un semplice clic su un URL costruito ad hoc gli utenti di Internet Explorer diventano potenzialmente vulnerabili alla rivelazione dei cookies presenti sulla loro macchina  (http://www.peacefire.org/security/iecookies)

Solitamente viene salvato tutto all'interno delle sessioni che funzionano esattamente come i cookie, ma che valgono solamente per la sessione in uso..in ogni caso non mandare mai la password in chiaro ma criptala sempre (ad esempio con la funzione MD5)

Re: PHP & COOKIE: sicurezza.

Inviato: venerdì 12 settembre 2008, 12:08
da YourEmployer
Non invio mai password, nè criptate nè "pulite".
Però come posso risolvere?
nel senso: qui sul forum di Ubuntu io eseguo il login, e poi la sessione dura tanto tempo.
sai indicarmi qualche link utile per chiarimenti?

ps: noto che i cookie di questo forum sono codici apparentemente senza significato...
Vincenzo.

Re: PHP & COOKIE: sicurezza.

Inviato: venerdì 12 settembre 2008, 12:24
da danilo.rossini
vincenzo2342 ha scritto: Non invio mai password, nè criptate nè "pulite".
Però come posso risolvere?
nel senso: qui sul forum di Ubuntu io eseguo il login, e poi la sessione dura tanto tempo.
sai indicarmi qualche link utile per chiarimenti?

ps: noto che i cookie di questo forum sono codici apparentemente senza significato...
Vincenzo.
Quando dichiari una sessione puoi settare il tempo si expires, prova a vedere la documentazione ufficiale del php.
Per quanto riguarda invece le vulnerabilità dei cookie basta che su google fai una ricerca con "Vulnerability cookie" o qualcosa di simile.

Ciao

Re: PHP & COOKIE: sicurezza.

Inviato: venerdì 12 settembre 2008, 14:33
da YourEmployer
Grazie farò una ricerca.
ma per non modificare troppo il codice, penso che sia ottimale una modifica del tipo:
quando eseguo la setcookie()  genero un codice casuale di 10 cifre e le inserisco nel database.
ad ogni connessione successiva controllo che il codice nel cookie di una persona sia uguale a quello nel DB.
Può andar bene, vero?
Grazie, Vincenzo.

Re: PHP & COOKIE: sicurezza.

Inviato: venerdì 12 settembre 2008, 14:55
da danilo.rossini
Ok, potrebbe andare..se al momento del salvataggio nel database gli fai un MD5($codice_casuale) sei comunque più tranquillo.. al momento del controllo ti basta poi fare un if ( $_COOKIE["codice_casuale"] == MD5($riga["codice_casuale"]) )

Re: PHP & COOKIE: sicurezza.

Inviato: venerdì 12 settembre 2008, 15:06
da garak
Vincenzo, confermo che la soluzione che hai scritto nel primo post è altamente insicura.
Purtroppo anche l'ultima (quella della verifica con un valore salvato su db) non è immune ad attacchi come quelli suggeriti da Danilo. Puoi migliorarla un po' memorizzando anche altri dati sull'utente, come per esempio indirizzo IP e stringa del browser e poi verificando che tutti i dati coincidano.

Re: PHP & COOKIE: sicurezza.

Inviato: venerdì 12 settembre 2008, 18:00
da YourEmployer
garak ha scritto: Vincenzo, confermo che la soluzione che hai scritto nel primo post è altamente insicura.
Purtroppo anche l'ultima (quella della verifica con un valore salvato su db) non è immune ad attacchi come quelli suggeriti da Danilo. Puoi migliorarla un po' memorizzando anche altri dati sull'utente, come per esempio indirizzo IP e stringa del browser e poi verificando che tutti i dati coincidano.
Ma.....l'IP non cambia dall'oggi al domani? cioè ogni volta che ti riconnetti il provider te ne assegna uno diverso, o no?
Inoltre se qualcuno naviga facendo zapping col browser, avrebbe fastidio..
faccio un codice casuale alfanumerico, lo passo sotto SHA1(MD5($codice12cifre)).$codice2;
forse forse...

Re: PHP & COOKIE: sicurezza.

Inviato: sabato 13 settembre 2008, 11:48
da garak
vincenzo2342 ha scritto: Ma.....l'IP non cambia dall'oggi al domani? cioè ogni volta che ti riconnetti il provider te ne assegna uno diverso, o no?
E quanto deve durare la tua sessione? Di solito uno alla sera spegne il pc e il giorno dopo rifà il login ;)
vincenzo2342 ha scritto: Inoltre se qualcuno naviga facendo zapping col browser, avrebbe fastidio..
Zapping? ???
vincenzo2342 ha scritto: faccio un codice casuale alfanumerico, lo passo sotto SHA1(MD5($codice12cifre)).$codice2;
forse forse...
Ma puoi fare tutte le magie che vuoi, però se uno ruba il cookie ad un'altro utente, non c'è magia che tenga. Devi mettere dei controlli sul client.

Re: PHP & COOKIE: sicurezza.

Inviato: mercoledì 17 settembre 2008, 19:11
da YourEmployer
garak ha scritto:
vincenzo2342 ha scritto: Ma.....l'IP non cambia dall'oggi al domani? cioè ogni volta che ti riconnetti il provider te ne assegna uno diverso, o no?
E quanto deve durare la tua sessione? Di solito uno alla sera spegne il pc e il giorno dopo rifà il login ;)
vincenzo2342 ha scritto: Inoltre se qualcuno naviga facendo zapping col browser, avrebbe fastidio..
Zapping? ???
vincenzo2342 ha scritto: faccio un codice casuale alfanumerico, lo passo sotto SHA1(MD5($codice12cifre)).$codice2;
forse forse...
Ma puoi fare tutte le magie che vuoi, però se uno ruba il cookie ad un'altro utente, non c'è magia che tenga. Devi mettere dei controlli sul client.
Su questo forum il mio login dura diversi giorni....ogni mattina non rifaccio il login.
zapping intendo cambiare browser (è raro, lo so...lo faccio solo io che provo il sito con firefox e con ie4linux )
Per la durata delle sessioni, ho trovato qualcosa, ma bidogna modificare il php.ini, cosa che non posso fare nel mio dominio >:(
Vincenzo.