HTX Frederikshavn & Hjørring

Det har aldrig været sjovere at være nørd

Brugerværktøjer

Webstedsværktøjer


prog:db_og_passwords

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