Hur lagras och verifieras ett lösenord?

  • Det rätta sättet att lagra
  • Varför hash?
  • Varför använder man salt?
  • Varför lägg till inloggningen?
  • Verifiering

Om du utvecklar en applikation som hanterar lösenord, är det viktigt att göra det på grund av risken att piratkopiera ditt system och kompromissa dina datanvändare.

Det är bra att lagra ett lösenord.

Det rätta sättet att lagra

Spara inloggningen och hash (inloggning + lösenord + salt)

Pseudokod: passwordHash = MD5MD5 (inloggning + "zo5pro $ 1pvkhj6 * cz4a8ùtvb # ui4oeuio" + lösenord)

Butik och lösenordHash login. Spara inte lösenordet.

Varför hash?

Vi ska aldrig lagra lösenordet i klar text.

  • Risk: Om någon bryter in i din databas med lösenord kan den hämta och använda dem direkt.
  • Skydd: Kocken används för att beräkna ett fingeravtryck av lösenordet. Eftersom algoritmen inte är reversibel kan den inte omedelbart hitta lösenordet från hash.
  • Det är därför vi använder en kryptografisk hash. Typiskt MD5, SHA-1 eller annan (SHA-256, SHA-512 ...)
  • Använd aldrig CRC eller CRC32 .

Varför använder man salt?

Regnbågens bord är stora bord som innehåller hash (MD5 och andra) precomputerade.

Detta gör att du snabbt kan hitta lösenordet som gav en viss hash.

Risk : Om du bara använder MD5 (lösenord) kan regnbordsbordet återställa lösenordet till MD5 på några minuter, även sekunder.

Skydd : Använd ett salt, vilket gör regnbordsskivorna helt onödiga.

Saltet är ett godtyckligt värde, längden på ditt val. Ange det som en konstant i din ansökan.

Varför lägg till inloggningen?

Om du bara lagrar MD5 (salt + lösenord) eller MD5 (lösenord) betyder det att två användare med samma lösenord kommer att ha samma hash.

  • Risk: Du kan enkelt identifiera användarna med samma lösenord. Om en användare är äventyrad tillåter den omedelbar åtkomst till andra användare (som kan ha större rättigheter).
  • Skydd: Genom att lägga till inloggningen före hasher kommer MD5-resultatet att vara annorlunda för varje användare, även om de har samma lösenord.

Verifiering

När du får inloggning och lösenord, upprepar du helt enkelt samma beräkning:

  • Titta i din bas, för hash för denna inloggning
  • Jämför hashvärdet (inloggning + salt + lösenord)
  • Om de två hasorna är identiska är lösenordet som anges korrekt.

Tack till sebsauvage för detta tips.

Tidigare Artikel Nästa Artikel

Bästa Tipsen