Patvirtindami vartotoją ar darydami ką nors panašaus, niekada neturėtumėte slaptažodžio laikyti gryname tekste.
Kadangi daugelis asmenų naudoja tą patį slaptažodį, jei užpuolikas aptinka nešifruotų slaptažodžių duomenų bazę, juos galima lengvai naudoti kartu su atitinkamais el. laiškais, kad įeitų į susietą svetainę ar paskyrą, ir netgi bandant pasiekti kitas paskyras.
Kai pateikiamas slaptažodis, šiandien dažnai maišoma slaptažodžiai. Patartina maišyti su druska ir laikyti druską kartu su maišytu slaptažodžiu.
Sūdymas gali atrodyti kaip vienas iš maišos rudųjų dažų recepto žingsnių, tačiau kriptografijoje jis reiškia atsitiktinių duomenų įtraukimą į maišos funkcijos įvestį, siekiant užtikrinti, kad maišos rezultatas visada būtų unikalus, net jei įvesties duomenys yra identiški.
Dėl to išskirtinė maiša, sukurta pridedant druskos, gali apsaugoti mus nuo kelių atakų metodų, įskaitant maišos lentelės užpuolimus, tuo pačiu slopindama žodyno ir brutalios jėgos bandymus neprisijungus.
Čia, naudodami kodo fragmentus, parodysime, kaip naudoti „bcrypt“ slaptažodžiams apsaugoti.
Taigi, kas yra „bcrypt“?
„Bcrypt“ yra maišos biblioteka, kuri palaiko kelias kalbas ir suteikia specialų slaptažodžio šifravimą. Kad padidintų slaptažodžio saugumą, jis automatiškai sukuria papildomų atsitiktinių simbolių (druska), kai šifruojama jūsų eilutė.
Taip pat galite pasirinkti, kiek papildomų simbolių norite įtraukti į gaunamą eilutę.
Bcrypt biblioteka skaito tik baitų kodą, o ne neapdorotas eilutes. Todėl prieš pateikdami įeinančią slaptažodžio eilutę šifravimui, pirmiausia turite ją užkoduoti.
Šifravimas ir kodavimas nėra tas pats dalykas. Tai tik užtikrina, kad eilutė būtų nuskaitoma mašininiu būdu, prieš ją uždengiant šifravimo technika.
„Bcrypt“ naudojimas slaptažodžiui užšifruoti „Python“.
„Python“ supaprastina „bcrypt“ slaptažodžio šifravimą. Mes sutelksime dėmesį į tai darydami be sistemos pagalbos. Tačiau nesijaudinkite, jei suprantate, kaip išsaugoti vartotojo įvestis ir skaityti jas iš duomenų bazės, sistema yra tokia pati.
montavimas
Jums tereikia nustatyti Python virtualią aplinką ir naudoti IDE, pvz., PyCharm. Tada pirmiausia reikia įdiegti biblioteką:
Šifruojamas slaptažodis
Pažiūrėkime, kaip naudoti bcrypt šifruoti tekstą po jo įdiegimo:
Pirmiau minėtas Python kodas vykdo ir išveda užšifruotą baitų eilutę. Tačiau kiekvieną kartą paleidus scenarijų rezultatas skiriasi. „Bcrypt“ naudoja šį metodą, kad įsitikintų, jog kiekvienas vartotojas turi specialiai užšifruotą slaptažodį.
Tai, beje, skirta slaptažodžiui šifruoti.
Slaptažodžių palyginimas ir patvirtinimas naudojant Bcrypt
Kas atsitiks, jei norite išsaugoti maišos slaptažodį ir vėliau patikrinti, ar jis sutampa su slaptažodžiu, kurį vartotojas pateikė autentifikuoti?
Tai paprasta. Tik autentifikavimo slaptažodis turi būti lyginamas su duomenų bazės įrašu (arba atmintyje šiuo atveju).
Autentifikavimo slaptažodis taip pat turi būti užkoduotas prieš lyginant su duomenų bazėje esančiu slaptažodžiu, nes bcrypt gali nuskaityti tik baitų eilutes. Iš esmės palyginsite užkoduotą autentifikavimo įvestį su koduotu maišos slaptažodžiu, kurį šiuo metu turite savo duomenų bazėje.
Išbandykime tai naudodami fiktyvias Python įvestis:
Paleidus pirmiau minėtą kodą, būsite paraginti įvesti naują slaptažodį. Tai išsaugo atmintyje „Python“. Autentifikavimo skiltyje įvesite tą patį slaptažodį, kuris yra privatus jums.
Jei slaptažodis lyginamas su slaptažodžiu, kuris anksčiau buvo užšifruotas ir išsaugotas, Python išsiunčia sėkmės pranešimą.
Jei ne, klaidos pranešimas išspausdinamas ir pridedamas sakinys else.
Pagrindinė idėja yra identiška registracijai ir slaptažodžio įvedimui į duomenų bazę autentifikavimui.
Išvada
Nors mes tiesiog panaudojome užšifruotus slaptažodžius, kad parodytume, kaip bcrypt veikia paprastoje Python trumpoje atmintyje, faktinis jo pritaikomumas slypi vartotojų bazėse.
Nepaisant to, šiame straipsnyje pateikiami pagrindiniai kodo sutvarkymo būdai, kad tai būtų atlikta net ir realiomis aplinkybėmis.
Pavyzdžiui, jei naudojate „Flask“, galite pateikti registracijos ir autentifikavimo laukus naudodami atskiras žiniatinklio formas, o ne įvestis.
Žinoma, lygindami slaptažodžius skaitysite iš duomenų bazės, kurioje yra užšifruoti slaptažodžiai, saugomi realiame pasaulyje.
Jona Nitsch
Ačiū už šį paprastą ir paprastą paaiškinimą,
Tai man labai padėjo dabartiniame projekte.
Manau, kad labai gerai, kad pavyzdinis kodas yra apribotas iki minimumo ir nėra perkrautas, kaip daugelis kitų paaiškinimų.
Nuoširdžiausi linkėjimai