Roligt projekt! Först ett sidospår: Missade diskussionen att ha hela sitt riktiga namn så råkade visst bara skriva mitt förnamn. Vem mailar man för att be om namnbyte?
Nu till min poäng. Jag tycker ni borde ändra sättet som lösenord hanteras. Det verka som lösenorden sparas i klartext i databasen vilket ger administratören och vem som helst som råkar få tag på en databasdump tillgång till lösenorden. Jag föreslår att detta ändras. Speciellt eftersom riktiga namn används ... många återanvänder ju sina lösenord varför om det brister på ett ställe så brister det överallt.
Ett vanligt och enkelt sätt att öka skyddet och integriteten hos användarna ett snäpp är att spara lösenorden krypterat så att det inte går att i efterhand extrahera det exakta lösenordet.
Detta kan ske genom följande: En person anger lösenordet "boll". Systemet tar lösenordet och och beräknar "krypteringsvärdet" "d6fsaTfB3auhUFd343=" utifrån lösenordssträngen. Resultatet av den beräkningen sparas sedan i databasen, alltså "d6fsaTfB3auhUFd343=". När en lösenordskontroll sker beräknas återigen återigen krypteringsvärdet och jämförs med det i databasen. Om samma värde har beräknas kan man anta att personen skrev in korrekt lösenord.
På detta sätt lagras aldrig det faktiska lösenorden("boll") i databasen, och ingen kan direkt läsa användarnas lösenord. Allt man ser är det beräknade krypteringsvärdet från vilket det inte går att beräkna det ursprungliga lösenordet. Detta innebär också att det inte går att trycka på "Glömt mitt lösenord" och få det ursprungliga mailat till sig, utan där måste ett nytt lösenord genereras som man sedan kan ändra.
Självklart måste man även se till att tex webbserverns loggningsfunktion inte sitter och sparar alla inskickade lösenord. Det går att lägga in filter så information från lösenordsfält inte loggas.
Dessa ändringar skyddar inte om någon sitter och lyssnar av trafiken, eller har tillgång till webbservern. Men det skulle skydda om t.ex. en databasdump/-backup hamnar på avvägar. Och det är ett steg i rätt riktning gällande dataintegritet, och det är väldigt enkelt och snabbt infört.
Se t.ex.
http://www.ironspeed.com/articles/Encrypting%20Passwords%20Before%20Saving%20to%20the%20Database/Article.V4.1.aspxhttp://www.devarticles.com/c/a/Java/Password-Encryption-Rationale-and-Java-Example/