Newsgroup: it.comp.www.asp
Titolo: salvataggio password nei cookies

Salve a tutti,
ho un problema da risolvere.
Vorrei permettere all'utente di salvare le credenziali di accesso in
fase di login spuntando una checkbox.
Fin qui nessun problema.
Salvando username e password in un cookie risolvo tranquillamente.
Quando l'utente ritorna, controllo se esiste il cookie e se trovo
anche username e password lo faccio accedere senza effettuare la
procedura di logon.
Ma nei cookie username e password sono in chiaro e questo non mi piace
molto.
Qualcuno conosce un trucco/componente per cifrare la password ?
(vorrei qualcosa di piu' di una semplice funzione scritta da me)
Pensavo di agire salvando la password cifrata anche nel db, un po'
come avviene in unix. La stessa password cifrata la inserisco anche
nel cookie.
Se l'utente accede via cookie si confrontano le due password cifrate.
Se accede digitantola in fase di logon, la password inviata viene
cifrata e confrontata con quella del db.
Cosi' nessuno puo' conoscere la password in chiaro.
Accetto consigli e suggerimenti.
Grazie 1000 a tutti.
dany...@yahoo.it

Se ho ben capito: a cosa ti serve la password?
Registra solo la login: se esiste il cookie vuol dire che precedentemente si
è grantato e quindi la password la conosce, se non esiste chiedi
login-password e registri solo la login

 Se ho ben capito: a cosa ti serve la password?
Beh! Sai... non credo sia molto sicuro.
Ipotiziamo che mi connetta al sito in questione.
Mi viene salvato un cookie.
Modifico lo username nel cookie ed entro come un'altro utente.
Un qualche sistema di protezione devo metterlo, se non la password almeno
qualcos'altro.
Saluti
dany...@yahoo.it
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

No, ha ragione.
I cookies sono files di testo, basta editarli e entri con la login di
qualcun'altro.
Io in questi casi uso un semplice algoritmo basato sui codici ascii, penso
sia "abbastanza" sicuro per un uso non di sicurezza nazionale ma che ha lo
svantaggio (in questo caso non penalizzante) di triplicare la lunghezza
della stringa.

 (vorrei qualcosa di piu' di una semplice funzione scritta da me)
Ciao,
usa una variabile boleana nel cookie, la setti true se l'utente e'
registrato e dopo fai il controllo su questa variabile, se e' true l'utente
sara' gia' loggato, se e' false dovra' loggarsi.
Semplice no? Cosi' eviti di dover gestire la password e il nome utente, beh,
magari il nome lo usi per fare un saluto personalizzato in caso di variabile
boleana true.
Saluti
BES

[CUT]
usa uno dei tanti algoritmi di crittazione a blocchi simmetrici per
memorizzare quello che ti serve in maniera sicura..
tipo "BlowFish", "Rijndael", "Serpent" trovi (
google.it
) delle classi
scritte in VBScript senza appoggiarti a compoenti esterni.
--
CIAO!
Gusher

 molto.
1) Inserisci in un file "encrypt.inc" il testo che ti posto in coda al
messaggio;
2) Crea una costante "ENCKEY" con la tua chiave di cifratura, ad es.:
Const ENCKEY = "pippopluto"
3) Prima di inviare la password la cifri cosi':
sCookie = Encrypt(sPassword)
4) Quando leggi il cookie decifri la password cosi':
sPassword = Decrypt(sCookie)
Ciao!
--
   Alex Palmese
---
<%
' -----------------------------------------------------------------
' Modulo: ENCRYPT.INC
' -----------------------------------------------------------------
' ROUTINE DI ENCRYPTION
Function Encrypt(Stringa)
    Encrypt = Binary2StringaHex(EncryptStringa(Stringa, ENCKEY))
End Function
Function Decrypt(Stringa)
    Decrypt = Trim(EncryptStringa(StringaHex2Binary(Stringa), ENCKEY))
End Function
' --------------------------------------
Function EncryptStringa(Stringa, Chiave)
    Dim lChiave, Buffer
    Dim p, c, c1
    ' Calcola la chiave numerica dalla stringa
    lChiave = 0
    For p = 1 to Len(Chiave)
     lChiave = lChiave + Asc(Mid(Chiave,p,1))
    Next
    ' Inizializza il generatore random
    Rnd (-1 * lChiave)
    ' Codifica la stringa
    Buffer = ""
    For p = 1 To Len(Stringa)
        c = Asc(Mid(Stringa, p, 1)) - 32
        c1 = (c Xor (Int(Rnd() * 64))) + 32
        Buffer = Buffer & Chr(c1)
    Next
    EncryptStringa = Buffer
End Function
Function Binary2StringaHex(Stringa)
    Dim i
    Dim Buffer
    Buffer = ""
    For i = 1 To Len(Stringa)
        Buffer = Buffer + HexValue(Asc(Mid(Stringa, i, 1)), 2)
    Next
    Binary2StringaHex = Buffer
End Function
Function HexValue(valore, Cifre)
    HexValue = Right(String(Cifre, "0") + Hex(valore), Cifre)
End Function
Function StringaHex2Binary(Stringa)
    Dim i
    Dim Buffer, HexVal
    Buffer = ""
    For i = 1 To Len(Stringa) Step 2
        HexVal = "&H" + Mid(Stringa, i, 2)
        Buffer = Buffer + Chr(cint(HexVal))
    Next
    StringaHex2Binary = Buffer
End Function
%>

 qualcun'altro.
Non sono d'accordo, i cookie dovrebbero avere un algoritmo di controllo
interno
Ho provato a editare e cambiare codice cliente, quando lo legge lo riscrive
corretto (se vedi nel file non ci sono solo i cookie in chiaro ma ci sono
anche dei codici dove, penso, si trova il cookie crittografato; es. ho
codice 9004; ho cambiato in 8345 e salvato, se ricarico la pagina mi indica
cookie 9004, se vado a rileggere il cookie mi ha riscritto 9004)

 
Non credo che esista modo diverso di fare.
Diciamo che potresti lavorare in maniera diversa per ottenere la 
password: supponiamo di usare due stringhe-chiave (una sul db e una nel 
cookie), che insieme, con una qualche procedura di decodifica, 
ritorneranno la password.
Quindi:
A) se digito la password, vado dritto
B) se passo col cookie, c'č questa decodifica.
Tutta la baracca avrebbe senso per NON scrivere la password sul cookie. 
Al piů uno si legge la prima chiave, ma ci fa ben poco.

 cookie 9004, se vado a rileggere il cookie mi ha riscritto 9004)
Dipende tutto da molte cose, esempio i cookies restano in memoria fino a
quando non chiudi IE.
Cioè se modifichi il cookie con IE aperto e ricarichi la pagina, otterrai
sempre lo stesso valore.
Se chiudi IE, modifichi il cookie e lo riapri non sarà la stessa cosa.

Cambiato cookie, chiuso i browser, riaperto => cambiato senza problemi....
Nei miei siti lavoro di session e ciň non mi crea problemi, perň č un gran
schifo...ricordavo anni fa di avere fatto questi test, magari non avevo mai
chiuso-riaperto browser? Oppure hanno cambiato qualcosa (direi da IE3-4,
tempi in cui avevo fatto questi test)....
Non mi esprimo...
Grazie

 fase di login spuntando una checkbox.
Cookie che contiene solo ed esclusivamente un GUID, tutti i dati salvati su
DB, sul client non c'è nulla. Quando riaccede aggiorni la data di ultimo
accesso sul DB e periodicamente "svecchi" il DB.
Vantaggi: nulla o quasi sul client, possibilità di memorizzare quintalate di
dati sul DB
Svantaggi: Non è sicuro al 100% dato che con un attacco "brute force" e
sapendo l'algoritmo con cui sono generati i GUID potresti arrivare ad avere
un login valido senza averlo ottenuto, ma la sicurezza è comunque molto ma
molto buona, se vuoi arrivare al 100% devi prendere il GUID e criptarlo in
modo oneway.
Saluti
Massimo