Python loginsysteem bouwen - heb een paar vraagjes

Beste medehackers,

Voordat je gelijk al gaat bedenken van: wat moet je met een loginsysteem: het is een groter geheel, maar mijn vragen gaan over het inloggen.

Ik ben bezig met een loginsysteem met bottle py en python maar nu had ik de volgende vragen:

  • Hoe kan ik het password hashen of beter gezegd: welke functie is betrouwbaar genoeg. Dus beter dan md5
  • Hoe zorg ik ervoor dat iemand ingelogd kan blijven ook als de browser gesloten wordt (ook zonder dat als men een cookie wijzigt hij gelijk als een andere persoon is ingelogd.)
  • Hoe zou ik kunnen controleren of iemand is ingelogd?

Bij voorbaat dank,
Jantje2000

Hoe kan ik het password hashen of beter gezegd: welke functie is betrouwbaar genoeg. Dus beter dan md5

bcrypt is op dit moment waarschijnlijk de beste keuze. Eerst het python bcrypt package installeren als je die nog niet hebt:

pip install bcrypt

En daarna kun je het in python gebruiken:

import bcrypt
hash = bcrypt.hashpw(wachtwoord, bcrypt.gensalt())

Er wordt dan een random salt gegenereerd, die onderdeel wordt van de hash. Je kunt deze ook weer aan dezelfde functie meegeven als je wil weten of een ingevoerd password correct is:

nieuwehash = bcrypt.hashpw(invoer, hash)

Als dan de nieuwe hash gelijk is aan de bekende hash, dan was het ingevoerde wachtwoord juist.

Hoe zorg ik ervoor dat iemand ingelogd kan blijven ook als de browser gesloten wordt (ook zonder dat als men een cookie wijzigt hij gelijk als een andere persoon is ingelogd.)

Dat is niet erg veilig, cookies die bij een sessie horen worden normaliter verwijderd zodra de gebruiker de browser sluit. Waarom wil je dat mensen blijven ingelogd? Wat dan veiliger is, is dat mensen hun wachtwoord in een keyring opslaan oid zodat ze makkelijker kunnen inloggen.