Вы ніколі не павінны захоўваць пароль у адкрытым выглядзе падчас пацверджання карыстальніка або выканання чагосьці падобнага.
Паколькі многія людзі выкарыстоўваюць адзін і той жа пароль, калі зламыснік выявіць базу незашыфраваных пароляў, яны могуць быць лёгка выкарыстаны ў спалучэнні з адпаведнымі электроннымі адрасамі для ўваходу на звязаны вэб-сайт або ўліковы запіс і нават выкарыстаны для спроб доступу да іншых уліковых запісаў.
Сёння паролі часта хэшуюцца, калі ўводзіцца пароль. Рэкамендуецца хэшаваць з соллю і захоўваць соль разам з хэшаваным паролем.
Саленне можа здацца адным з этапаў рэцэпту хэш-карычневага колеру, але ў крыптаграфіі гэта адносіцца да дадання выпадковых даных да ўваходных дадзеных хэш-функцыі, каб гарантаваць, што хэш заўсёды будзе забяспечваць унікальны вынік, нават калі ўваходныя дадзеныя ідэнтычныя.
У выніку характэрны хэш, які ствараецца пры даданні солі, можа абараніць нас ад некалькіх метадаў нападу, у тым ліку нападу на хэш-табліцу, адначасова душачы спробы выкарыстання слоўніка і грубай сілы ў аўтаномным рэжыме.
Тут з дапамогай фрагментаў кода мы прадэманструем, як выкарыстоўваць «bcrypt» для абароны вашых пароляў.
Такім чынам, што такое «bcrypt»?
Bcrypt - гэта бібліятэка хэшавання, якая падтрымлівае некалькі моў і забяспечвае спецыяльнае шыфраванне пароляў. Для павышэння бяспекі вашага пароля ён аўтаматычна стварае дадатковыя выпадковыя сімвалы (соль) пры шыфраванні радка.
Вы таксама можаце выбраць, колькі дадатковых сімвалаў вы хочаце дадаць да ўваходнага радка.
Бібліятэка bcrypt чытае толькі байт-код, а не неапрацаваныя радкі. Такім чынам, перш чым адправіць ўваходны радок пароля ў bcrypt для шыфравання, вы павінны спачатку закадзіраваць яго.
Шыфраванне і кадзіраванне - гэта не адно і тое ж. Ён проста гарантуе, што радок з'яўляецца машыначытэльным перад тым, як быць скрыты метадам шыфравання.
Выкарыстанне bcrypt для шыфравання пароля ў Python
Python робіць шыфраванне пароля bcrypt простым. Мы сканцэнтруемся на тым, каб зрабіць гэта без дапамогі структуры. Але не хвалюйцеся, калі вы разумееце, як захоўваць уведзеныя карыстальнікам дадзеныя і чытаць іх з базы дадзеных, у фрэймворках працэдура такая ж.
ўстаноўка
Вам трэба толькі наладзіць віртуальнае асяроддзе Python, а затым выкарыстоўваць IDE, напрыклад PyCharm. Затым спачатку трэба ўсталяваць бібліятэку:
Шыфраванне пароля
Давайце паглядзім, як выкарыстоўваць bcrypt для шыфравання тэксту пасля яго ўстаноўкі:
Вышэйзгаданы код Python выконвае і выводзіць зашыфраваны радок байтаў. Але кожны раз, калі вы запускаеце сцэнар, вынік адрозніваецца. Bcrypt выкарыстоўвае гэты метад, каб пераканацца, што кожны карыстальнік мае пароль, які спецыяльна зашыфраваны.
Гэта, дарэчы, для шыфравання пароля.
Параўнанне і пацверджанне пароляў з дапамогай Bcrypt
Што адбудзецца, калі вы захочаце захаваць хэшаваны пароль і пазней праверыць, ці адпавядае ён паролю, які карыстальнік адправіў для аўтэнтыфікацыі?
Гэта проста. Толькі пароль аўтэнтыфікацыі павінен параўноўвацца з запісам у базе дадзеных (або ў памяці ў дадзеным выпадку).
Пароль аўтэнтыфікацыі таксама павінен быць закадзіраваны перад параўнаннем з паролем у базе даных, таму што bcrypt можа чытаць толькі радкі байтаў. Па сутнасці, вы параўноўваеце закадзіраваны ўвод аўтэнтыфікацыі з закадзіраваным хэшаваным паролем, які зараз ёсць у вашай базе дадзеных.
Давайце праверым гэта з дапамогай фіктыўных уводаў Python:
Пасля запуску вышэйзгаданага кода вам будзе прапанавана ўвесці новы пароль. Гэта захоўваецца ў памяці Python. Затым у раздзеле аўтэнтыфікацыі вы ўвядзеце той самы прыватны пароль.
Калі пароль параўноўваецца з тым, які раней быў зашыфраваны і захаваў супадзенне, Python выдае паведамленне аб паспяховым выкананні.
Калі няма, то раздрукоўваецца паведамленне пра памылку, а затым дадаецца сказ else.
Фундаментальная ідэя ідэнтычная рэгістрацыі, а затым уводу пароля ў базу дадзеных для аўтэнтыфікацыі.
заключэнне
Нягледзячы на тое, што мы проста выкарысталі зашыфраваныя паролі, каб паказаць, як bcrypt працуе ў звычайнай кароткай памяці Python, яго фактычнае прымяненне ляжыць у праграмах для карыстальнікаў.
Тым не менш, гэты артыкул дэманструе асноўныя метады арганізацыі вашага кода для дасягнення гэтай мэты, нават у рэальных абставінах.
Напрыклад, калі вы выкарыстоўваеце Flask, вы можаце забяспечыць палі рэгістрацыі і аўтэнтыфікацыі праз асобныя вэб-формы замест уводу.
Вядома, параўноўваючы паролі, вы будзеце чытаць з базы дадзеных, якая змяшчае зашыфраваныя паролі, якія захоўваюцца ў рэальным свеце.
Ёна Ніч
Дзякуй за гэта простае і простае тлумачэнне,
Гэта вельмі дапамагло мне ў маім бягучым праекце.
Я думаю, што гэта вельмі добра, што прыклад кода абмежаваны мінімумам і не перагружаны, як многія іншыя тлумачэнні.
З найлепшымі пажаданнямі