a proposito di cookie

Ho un DB su cui sono memorizzati i dati degli utenti del mio sito, con nick e password (criptat in MD5).

La gestione del login la realizzo con le sessioni, ora vorrei dare la possibilità di checkare l'opzione ricordami e quindi salvare le info del mio utente in un cookie. Di qui le domande:

1. secondo voi cosa devo memorizzare nel cookie (solo il nick, anche la password, che altro...)?

2. è possibile accedere ai dati dei cookie, per cui è necessario criptare i dati che vi sono memorizzati (tipo password, o info personali)? Se sì in che modo?

Grazie

 :bye:

inviato 10 anni fa
Nico Colonna
X 0 X

I cookie risiedono sul tuo pc, quindi puoi accederci solo tu o al limite chi utilizza il tuo pc...

Per cosa memorizzare nel cookie, dipende da quello che devi fare, ossia, se vuoi far saltare il login ad un utente dopo che questo si è loggato per la prima volta, puoi settare un cookie quando effettua il login, ad esempio:

//Dopo aver cliccato sul pulsante di login
/*Se l'utente non ha già il cookie settato, quindi è al primo login, allora setti un cookie*/
if(!isset($_COOKIE['login']))
 setcookie("login",1,$durataCookie);

Nella pagina di login puoi fare:
if(isset($_COOKIE['login']) && $_COOKIE['login'] == 1)
{
 //Salta login e vai alla pagina successiva
 header("Location: pag_dopo_login.php");
 exit
}
else
{
  //Mostra form di login
}

Se invece vuoi presentare nel form di login nome e password (senza che l'utente li reinserisca), quando effettua il login:

if(!isset($_COOKIE['login']))

{

  setcookie("login",$login,$durataCookie);

  setcookie("password",$pass,$durataCookie);

}

  //Mostra form di login e nei campi login e password visualizzi i valori dei cookie 'login' 'password'

Questa potrebbe essere un'idea, dipende da quello che devi fare tu...

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

per la funzionalità "ricordami" basta $nome_utente e md5($password)

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Per Lore: lo so he il cookie risiede sul computer del client, ma se il client è un craker e io memorizzo solo il nome utente e un booleano per dare lo stato di loggato, al craker sarà sufficiente registrarsi al sito e modificare il cookie con il nome di un nuovo utente per poter accedere al sistema con le credenziali di un altro user. O sbaglio?  :idiot:

Però se, come suggerisce Gianni, memorizzo anche l'md5(password) per il cracker si fà un pò più dura! Per cui penso che procederò così.

Grazie ragazzi e Buona Pasqua a tutti gli utenti

 :bye:

risposto 10 anni fa
Nico Colonna
X 0 X
Per Lore: lo so he il cookie risiede sul computer del client, ma se il client è un craker e io memorizzo solo il nome utente e un booleano per dare lo stato di loggato, al craker sarà sufficiente registrarsi al sito e modificare il cookie con il nome di un nuovo utente per poter accedere al sistema con le credenziali di un altro user. O sbaglio?  :idiot:

Chiaramente non devi mai inviare dati "particolari" verso il cookie magari solo un account ma mai la password.

L'account lo puoi mandare, perché di solito coincide con quello pubblico, quindi chiunque lo può leggere e il cracker non ci fa nulla se non ha la password, poi sta a te inventare un sistema per impedire un attacco a forza bruta.

Il rischio non il cracker che si reiscrive, anche perché per farlo lo deve necessariamente fare da capo e quindi che ci fa? Nulla.

Ma è per questo che su un sistema a registrazione non ci devono essere due nomi uguali, se no a quale dei due fai accedere?

Sul cookie di solito si inserisce proprio un valore codificato che rappresenta l'account (mai la password ovviamente) o al limite un account fittizio generato al momento della registrazione, in modo che se per caso venga decodificato, il cracker comunque non sa di chi è (sempre che gliene freghi qualcosa poi).

Per inciso, MD5 sta per essere decriptato, sono state già scoperte 8 collisioni nello stesso file, quindi manca poco, ma insomma per ora è arcisicuro per cose di poco conto.

Però se, come suggerisce Gianni, memorizzo anche l'md5(password) per il cracker si fà un pò più dura! Per cui penso che procederò così.

Grazie ragazzi e Buona Pasqua a tutti gli utenti

 :bye:

Mai mandare la password, Gianni voleva dire che nel database la password deve essere criptata, se no può proprio voler dire darsi la zappa sui .... OO ;)

risposto 10 anni fa
Marco Grazia
X 0 X

Premessa: nelle prossime considerazioni sulla sicurezza non terrò conto del rischio di intercettaizione del traffico internet sia perché lo reputo estremamente contenuto, sia perché le relative contromisure non coinvolgono direttamente gli script PHP.

Per la funzione "ricordami" il cookie deve contenere qualcosa in più del nome utente, quello pubblico, altrimenti sarebbe facile farsi un cookie ad arte e loggarsi con le credenziali di un'altra persona.

E' necessario quindi inserire un ulteriore dato che sia associato all'account dell'utente, che non sia di pubblico dominio e che comunque non sia direttamente collegato con la password. Usare la password in chiaro è pericoloso perché un malintenzionato che riesce ad avere accesso al PC della vittima potrà leggerla facilmente. Le conseguenze non riguardano esclusivamente il login all'applicazione, che comunque sarebbe facile ottenere "clonando" il cookie, indipendentemente dal suo contenuto. Il problema più grave sarebbe quello di aver fatto conoscere la password che l'utente ha scelto e che forse ha impiegato in chissà quanti altri contesti...

L'md5 della password è, seppur debolmente, collegato alla password stessa e come diceva Marcolino sta dimostrando i segni del tempo. Quindi mettere l'md5 della password nel cookie ne mette comunque a repentaglio la sicurezza, anche se relativamente. Per limitare questi rischi diversi sistemi usano mettere "il sale" alla password prima di calcolarne l'md5.

Una soluzione potrebbe essere quella di creare e conservare nel DB una seconda password in maniera del tutto automatica, da utilizzare esclusivamente per la funzione "ricordami". Inserendo questa seconda password nel cookie non si esporrebbe l'utente a rischi ulteriori, poiché se qualcuno riesce a leggerla significa che comunque ha la possibilità di "clonare" il cookie.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
modificato 10 anni fa
X 0 X

Esattamente, oppure mettere una parola chiave davanti alla password dell'utente (il sale di gianni) e poi trasformare il tutto in un md5, insomma l'importante è non mettere la password così com'è e basta.

Comunque sulla questione del clonare i cookies c'è da dire due cosucce e una premessa:

La premessa è che per non farsi "fregare" l'identità, ricordarsi sempre di connettere il dispositivo che sta tra la sedia e il monitor del computer ;)

Le due cose sono queste:

1) alcuni vanno a connettersi negli internet point, dove poi lasciano cookies e quant'altro sui PC dei locali.

2) altri navigano da reti aziendali, dove tra l'altro per sentenze recenti della cassazione il datore di lavoro può anche controllare la navigazione del lavoratore o peggio da colleghi furbacchiotti e mi fermo qui.

Insomma in ogni caso l'eventuale colpa di una clonazione dei dati personali ricadrebbe sempre sulla disattenzione dell'utilizzatore.

Sempre e comunque se l'autore dello script ha posto in essere tutta la propria abilità per evitare che le eventuali clonazioni o peggio siano possibili da utenti smaliziati.

E' chiaro che come dice Gianni la possibilità della clonazione di un cookie è rara, ma è sempre possibile che chi viene clonato si rifaccia su chi ha creato lo script, dico questo perché è già capitato; parlo ovviamente non di clonazione, lì c'è poco da fare, dico di script malformati che permettevano di identificarsi facilmente come altro utente da login. Però è sempre seccante dover in sede di giudizio dimostrare che la clonazione non è avvenuta per colpa di uno script malformato, ma per colpa dell'utonto sprovveduto.

risposto 10 anni fa
Marco Grazia
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda