Vi neniam devas konservi pasvorton en klarteksto dum konfirmado de uzanto aŭ farante ion similan.
Ĉar multaj individuoj uzas la saman pasvorton, se atakanto malkovras datumbazon de neĉifritaj pasvortoj, ili povas facile esti uzataj kune kun kongruaj retpoŝtoj por eniri la ligitan retejon aŭ konton kaj eĉ uzi por provi aliri aliajn kontojn.
Pasvortoj ofte estas hakitaj hodiaŭ kiam pasvorto estas liverita. Oni konsilas haŝi kun salo kaj konservi la salon kune kun la haŝita pasvorto.
Salado povus ŝajni kiel unu el la paŝoj en recepto por hashbrunoj, sed en kriptografio, ĝi rilatas al aldono de hazardaj datumoj al la enigo de hash-funkcio por certigi, ke la hash ĉiam donos unikan rezulton eĉ se la enigaĵoj estas identaj.
Kiel rezulto, la distinga hash kreita per aldonado de la salo povas defendi nin de pluraj atakmetodoj, inkluzive de hashtablaj atakoj, dum sufokado de vortaro kaj krudfortaj senretaj provoj.
Ĉi tie, kun la helpo de kodaj fragmentoj, ni montros kiel uzi 'bcrypt' por sekurigi viajn pasvortojn.
Do, kio estas 'bcrypt'?
Bcrypt estas hashing-biblioteko kiu subtenas plurajn lingvojn kaj provizas specialan pasvortan ĉifradon. Por pliigi la sekurecon de via pasvorto, ĝi aŭtomate produktas pliajn hazardajn signojn (salo) dum ĉifrado de via ĉeno.
Vi ankaŭ povas elekti difini kiom da pliaj signoj vi volas aldoni al envenanta ĉeno.
La bcrypt-biblioteko nur legas bajtan kodon, ne krudajn ŝnurojn. Sekve, antaŭ sendi envenantan pasvortĉenon al bcrypt por ĉifrado, vi unue devas kodi ĝin.
Ĉifrado kaj kodado ne estas la samaj aferoj. Ĝi nur certigas, ke ĉeno estas maŝinlegebla antaŭ ol esti kovrita per ĉifrada tekniko.
Uzante bcrypt por Ĉifri Pasvorton en Python
Python simpligas bcrypt-pasvortan ĉifradon. Ni koncentriĝos pri fari ĉi tion sen la helpo de kadro. Sed ne maltrankviliĝu, se vi komprenas kiel konservi uzantajn enigojn kaj legi ilin el la datumbazo, la procedo estas la sama en kadroj.
instalado
Vi nur bezonas agordi virtualan medion de Python kaj poste uzi IDE kiel PyCharm. Tiam la biblioteko devas esti instalita unue:
Ĉifrado de pasvorto
Ni vidu kiel uzi bcrypt por ĉifri tekston post kiam ĝi estas instalita:
La supre menciita Python-kodo efektivigas kaj eligas ĉifritan bajtan ĉenon. Sed ĉiufoje kiam vi rulas la skripton, la rezulto estas malsama. Bcrypt uzas ĉi tiun metodon por certigi, ke ĉiu uzanto havas pasvorton specife ĉifrita.
Tio, cetere, estas por pasvorta ĉifrado.
Pasvorta Komparo kaj Konfirmo Uzante Bcrypt
Kio okazas se vi volas konservi la haŝitan pasvorton kaj kontroli poste por vidi ĉu ĝi kongruas kun la pasvorto, kiun uzanto sendis por aŭtentigo?
Tio estas simpla. Nur la aŭtentikiganta pasvorto devas esti komparita kun la eniro de la datumbazo (aŭ en memoro ĉi-kaze).
La aŭtentikiga pasvorto ankaŭ devas esti kodita antaŭ ol esti komparita kun tiu en la datumbazo ĉar bcrypt povas nur legi bajtajn ĉenojn. Esence, vi komparos koditan aŭtentigan enigon kun la kodita haŝita pasvorto, kiun vi nuntempe havas en via datumbazo.
Ni provu ĉi tion uzante fikciajn Python-enigaĵojn:
Ekfunkciiginte la menciitan kodon, vi estas petata por nova pasvorto. Ĉi tio estas konservita en memoro de Python. En la aŭtentikiga sekcio, vi tiam enigos la saman pasvorton, kiu estas privata por vi.
Se la pasvorto estas komparata kaj tiu, kiu antaŭe estis ĉifrita kaj konservita la matĉo, Python elsendas sukcesan mesaĝon.
Se ne, la erarmesaĝo estas presita kaj tiam la alia frazo estas aldonita.
La fundamenta ideo estas identa al tiu registri kaj poste provizi pasvorton al datumbazo por aŭtentigo.
konkludo
Eĉ dum ni simple uzis ĉifritajn pasvortojn por montri kiel bcrypt funkcias en simpla Python mallonga memoro, ĝia reala aplikebleco kuŝas en uzantbazaj programoj.
Tamen, ĉi tiu artikolo montras la esencajn metodojn por organizi vian kodon por plenumi tion, eĉ en realaj cirkonstancoj.
Ekzemple, se vi uzas Flask, vi povas provizi la registrajn kaj aŭtentigajn kampojn per apartaj retformularoj anstataŭ enigaĵoj.
Kompreneble, komparante pasvortojn, vi legos el datumbazo, kiu enhavas ĉifritajn pasvortojn, kiuj estas konservitaj en la reala mondo.
Jona Nitsch
Dankon pro ĉi tiu simpla kaj simpla klarigo,
Ĉi tio multe helpis min en mia nuna projekto.
Mi pensas, ke estas tre bone, ke la ekzempla kodo estas limigita al la minimuma kaj ne troŝarĝita kiel tiom da aliaj klarigoj.
Best regards