Säker lösenordslagring och återställning av autentiseringsuppgifter
Lär er att hasha lösenord korrekt, skydda mot angrepp mot autentiseringsuppgifter och bygga säkra flöden för lösenordsåterställning och kontoåterställning.
Säker lösenordslagring och återställning av autentiseringsuppgifter är en gratis lektion i Säker kodning och OWASP Top 10 för backend på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Säker kodning och OWASP Top 10 för backend, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Säker kodning och OWASP Top 10 för backend innehåller totalt 4 lektioner.
Varför hashning är viktigt
Om lösenord lagras i klartext eller med svag kodning innebär ett enda databasintrång att alla användare exponeras. Lösenord måste lagras som saltade hashvärden med hjälp av en långsam algoritm särskilt utvecklad för detta ändamål.
Den här lektionen handlar om korrekt hashning och säkra flöden för återställning.
Hashning, inte kryptering
Lösenord ska hashas, inte krypteras. Kryptering kan återställas; om nyckeln läcker exponeras alla lösenord. Hashning är envägsbaserad: du verifierar genom att hasha indata och jämföra resultatet.
- Använd aldrig återställbar kryptering för lösenord
- Använd aldrig snabba hashfunktioner som MD5 eller SHA-1 ensamma
Saltning
Ett salt är ett unikt slumpmässigt värde som läggs till varje lösenord före hashning. Salt gör att två användare med samma lösenord får olika hashvärden, vilket motverkar förberäknade regnbågstabeller.
Moderna algoritmer genererar och lagrar saltet åt dig.
Välja en algoritm
Använd en avsiktligt långsam, minneskrävande algoritm: Argon2 (förstahandsval), bcrypt eller scrypt. Deras kostnadsfaktor gör brute force-attacker dyra även när angripare har stulit hashvärden.
Hashning i kod
Här är ett konceptuellt flöde för hashning och verifiering med ett bcrypt-liknande API.
import bcrypt
def hash_password(plain):
return bcrypt.hashpw(plain.encode(), bcrypt.gensalt(rounds=12))
def verify(plain, stored_hash):
return bcrypt.checkpw(plain.encode(), stored_hash)
h = hash_password('s3cret')
print(verify('s3cret', h))Justera kostnadsfaktorn
Kostnadsfaktorn (antal omgångar) styr hur långsam hashningen är. Ställ in den så att en enskild hashning tar cirka 100–300 ms på din maskinvara: tillräckligt långsamt för att avskräcka angripare men tillräckligt snabbt för inloggning. Justera den på nytt när maskinvaran blir bättre.
Skydda mot credential stuffing
Angripare återanvänder läckta autentiseringsuppgifter på olika webbplatser. Skydda dig med hastighetsbegränsning, kontolåsning med ökande fördröjning och kontroller mot listor över kända läckta lösenord.
- Begränsa misslyckade inloggningar per konto och per IP-adress
- Avvisa lösenord som finns i samlingar av läckta lösenord
- Varna användare om inloggningar från nya enheter
Jämförelse i konstant tid
Jämförelser av hemligheter måste ta lika lång tid oavsett hur många tecken som matchar, annars kan angripare härleda värden genom tidsmätning. Hashningsbibliotek tillhandahåller verifieringsfunktioner med konstant körtid; använd dem i stället för vanlig likhetsjämförelse.
Säkra token för lösenordsåterställning
Flöden för återställning är ofta en svag punkt. Generera en slumpmässig token med hög entropi, lagra endast dess hashvärde, ange en kort giltighetstid och ogiltigförklara den efter första användningen.
import secrets, hashlib, time
def create_reset_token():
raw = secrets.token_urlsafe(32)
record = {
'token_hash': hashlib.sha256(raw.encode()).hexdigest(),
'expires_at': time.time() + 900,
'used': False,
}
return raw, record # email raw to user, store recordUndvika kontoenumerering
Svar vid återställning och inloggning ska inte avslöja om en e-postadress finns. Returnera samma meddelande oavsett och skicka återställningsmeddelandet endast om kontot finns. På så sätt hindras angripare från att samla in giltiga konton.
Hashning på nytt vid inloggning
När du uppgraderar algoritmer eller kostnadsfaktorer ska du hasha användarens lösenord på nytt vid nästa lyckade inloggning med de nya parametrarna. Då migreras lagringen gradvis utan att användarna tvingas återställa sina lösenord.
Snabbkontroll
Testa din förståelse av säker lagring av lösenord.
Sammanfattning
Du har lärt dig att hasha med salt med Argon2 eller bcrypt, justera kostnadsfaktorn, skydda mot credential stuffing med hastighetsbegränsning, jämföra i konstant tid och bygga återställningstoken som endast kan användas en gång, upphör efter en viss tid och undviker kontoenumerering. Korrekt hantering av autentiseringsuppgifter skyddar användare även när databasen utsätts för intrång.
Lär dig Säker kodning och OWASP Top 10 för backend med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Säker lösenordslagring och återställning av autentiseringsuppgifter” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Säker kodning och OWASP Top 10 för backend, inklusive ”Säker lösenordslagring och återställning av autentiseringsuppgifter”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Säker kodning och OWASP Top 10 för backend innehåller totalt 4 lektioner.
Vad lär jag mig i ”Säker lösenordslagring och återställning av autentiseringsuppgifter”?
Lär er att hasha lösenord korrekt, skydda mot angrepp mot autentiseringsuppgifter och bygga säkra flöden för lösenordsåterställning och kontoåterställning. Ni övar på Säker kodning och OWASP Top 10 för backend med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Säker kodning och OWASP Top 10 för backend?
Du behöver inga förkunskaper. Utbildningen i Säker kodning och OWASP Top 10 för backend på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Säker lösenordslagring och återställning av autentiseringsuppgifter”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Säker kodning och OWASP Top 10 för backend-lektionen?
Ja. Varje Säker kodning och OWASP Top 10 för backend-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Multifaktorautentisering (MFA)
- OAuth 2.0 och OpenID Connect
- JWT-säkerhet och bästa praxis
- Säker lösenordslagring och återställning av autentiseringsuppgifter