prog:db_og_passwords
Indholdsfortegnelse
Opbevaring af passwords i en database
Når man laver et login‑system, må man aldrig gemme passwords i klar tekst i databasen. Hvis databasen bliver stjålet, vil alle brugeres passwords ellers være synlige.
I stedet bruger man disse principper:
- Passwords hashes
- Hvert password får et salt
- Kun hash + salt gemmes i databasen
Hvad er hashing?
En hash er resultatet af en énvejskryptering:
- Man kan lave en hash ud fra et password
- Man kan ikke lave passwordet ud fra hashen
Eksempel:
Password: "hemmeligt123" Hash: "A94A8FE5CCB19BA61C4C..."
Når brugeren logger ind:
- Brugeren indtaster sit password
- Passwordet hashes igen
- Hashen sammenlignes med den, der ligger i databasen
Hvad er "salt"?
Et salt er en tilfældig tekst, som lægges sammen med passwordet før hashing.
Eksempel:
Password: hemmeligt123 Salt: X7f@9Q! Resultat: hemmeligt123X7f@9Q!
Det samlede resultat hashes derefter.
Hvorfor bruger man salt?
Salt forhindrer to vigtige angreb:
- Ens passwords → samme hash
- Rainbow table‑angreb (færdige lister med hashes)
Uden salt:
"1234" → samme hash for alle brugere
Med salt:
"1234" + saltA → hash1 "1234" + saltB → hash2
Selv om to brugere har samme password, får de forskellige hashes.
Hvordan gemmes det i MariaDB?
I databasen gemmer man typisk:
* `PasswordHash` * `Salt`
Eksempel på tabel:
id | username | password_hash | salt
Man gemmer aldrig selve passwordet.
Kort C#‑tanke (uden kode)
I C# gør man typisk:
- Generér et tilfældigt salt
- Kombinér password + salt
- Hash resultatet (fx med SHA‑256 eller bedre)
- Gem hash og salt i databasen
Ved login:
- Hent salt fra databasen
- Hash det indtastede password + salt
- Sammenlign hashes
***
prog/db_og_passwords.txt · Sidst ændret: af admin
