Vorrei far notare un problema: come funziona il login.
Codice: Seleziona tutto
POST /ucp.php?mode=login HTTP/1.1
[ommiss]
username=kimj&password=miaPasswordInChiaro&autologin=on&redirect=.%2Fucp.php%3Fmode%3Dlogin&sid=mioSessionID&redirect=index.php&login=Accedi
Il team di PhpBB afferma che, anche se si inviasse la password passandola prima da una funzione di hash, essa non sarebbe più sicura:
e suggeriscono di usare https.A hashed password is no more secure than a plaintext one when in-transit.
Penso si riferiscano al fatto che, intercettato l'hash, sia possibile riutilizzarlo come se fosse una password. Ora, se c'è un campo in cui non vado bene esso è quello della matematica e della crittografia, ma penso stia scritto in qualsiasi libro sull'argomento che, per difendersi da un replay attack, basti inserire un timestamp o, visto che l'orario difficilmente sarà sincronizzato, un id di sessione.
esempio:
il server del forum mi assegna un id di sessione, mettiamo 12345678910 (cosa che già avviene), più il salt assegnatoci alla registrazione. Quando carico la pagina di login, lascia tali valori nella pagina.
A questo punto, del codice javascript, quando premo "login" (onSubmit), calcola hash(hash(password, salt), 1234567890), il che ha la doppia funzione di prevenire un replay attack e di fungere da salt.
La parte lato server calcola se l'hash salvato come password corrisponde a quanto ricevuto dal client, ovvero se hash(hashSalvatoNelDatabase, 1234567890) è uguale a hash(hash(password, salt), 1234567890), come calcolato dal client
Si potrebbe trovare una soluzione?
So che i certificati costano, e lasciano comunque nelle mani di terzi. Si potrebbe segnalare la cosa come problema di sicurezza agli sviluppatori, o modificare questo forum, ma immagino vi costerebbe fatica... il mio è solo un suggerimento volto a migliorare la sicurezza del forum, non voglio lamentarmi.
PS: non prendete necessariamente per buono quanto ho scritto, sono sveglio da ieri alle 6 di mattina...