Kryptering av brukerpassord
Dette er UTROLIG viktig, og er et lovbrudd dersom man lar være å kryptere data i ekte bruksområder. Det er heller ikke så vanskelig.
Dokumentet er ikke ferdig.
Lag et krypteringsbibliotek
Vi må først lage et nytt bibliotek over funksjoner, dette er ikke et must - men det gjør at vi kan holde koden mer ryddig. Vi lager derfor et ny .js
dokument og kaller denne for crypto.js
. Denne skal inneholde funksjoner som gjør det enklere for oss å kryptere innhold.
crypto.js
Denne koden lager en ny funksjon, sha512(tekst)
, som returnerer samme teksten i Hashet format.
Legg til sha512 i vår Express app
For å legge til vårt nye bibliotek må vi legge til følgende variabel øverst på vår app, slik med våre andre biblioteker.
app.js
Denne importerer sha512 funksjonen fra crypto.js
i samme mappe som app.js
.
For å ta i bruk algoritmen trenger vi kun å endre alle referanser til req.body.password
til å være sha512(req.body.password)
, som i f.eks. app.post('/auth')
funksjonen:
app.js
Det samme gjelder når vi lager vår bruker i app.post('/signup')
app.js
Nå vil passordene som blir laget av bruker, og det som blir lagret i databasen, bli omgjort til en annen variant ved hjelp av sha512
sin hashingsalgoritme. passord
i sha512
er eksempelvis a9d50700baec3d1e40c238bcb37847d3a9633e174dfabeeddcac68d661d02937f71c0edba8b41602e8993015c465ec330f40843849c163d9235d00542a96e3a1
- Dette er ikke reverserbart, og er derfor mye tryggere å lagre.
Merk at brukeren trenger ikke skrive mer enn passord
når han logger inn og trenger derfor ikke tenke på algoritmen.
Pepper
Salt og Pepper er mye brukt i kryptografi, vi har sett på hvordan man salter en cookie i Cookies, som gjør det vanskelig å lese data i cookie filen dersom den skulle på en eller annen måte lekke ut. Pepper er en annen måte å obfuskere data på er gjennom peppring, som er en ekstra streng av tekst som legges til før dataen blir hashet.
Eksempel kan være at dersom en bruker Passord123
som passord, kan det bli pepret med dZ0lyQg90NuDfmp2U6FJDmBUE6xMme
. Passordet vil da bli for eksempel Passord123dZ0lyQg90NuDfmp2U6FJDmBUE6xMme
, hvis vi legger pepperet på slutten av teksten.
Vi kan fint legge til pepperet i vår funksjon slik:
crypto.js