Foydalanuvchini tasdiqlash yoki shunga o'xshash ishlarni amalga oshirishda hech qachon ochiq matnda parol saqlamasligingiz kerak.
Ko'pchilik bir xil paroldan foydalanganligi sababli, agar tajovuzkor shifrlanmagan parollar ma'lumotlar bazasini topsa, ular bog'langan veb-sayt yoki hisob qaydnomasiga kirish uchun mos keladigan elektron pochta xabarlari bilan osongina ishlatilishi mumkin va hatto boshqa hisoblarga kirishga urinish uchun ishlatilishi mumkin.
Ko'pincha parol taqdim etilganda parollar bugun xeshlanadi. Tuz bilan xash qilish va tuzni xeshlangan parol bilan birga saqlash tavsiya etiladi.
Tuzlash xesh-qo'ng'irlar uchun retseptning bosqichlaridan biri kabi ko'rinishi mumkin, ammo kriptografiyada u xesh funktsiyasi kiritilishiga tasodifiy ma'lumotlarni qo'shishni anglatadi, hatto kirishlar bir xil bo'lsa ham, xesh har doim noyob natijani ta'minlaydi.
Natijada, tuz qo'shish orqali yaratilgan o'ziga xos xesh bizni bir nechta hujum usullaridan, jumladan, xesh jadvaliga hujum qilishdan himoya qilishi mumkin, shu bilan birga lug'at va shafqatsiz oflayn rejimga urinishlarni bo'g'adi.
Bu yerda kod parchalari yordamida parollaringizni himoyalash uchun "bcrypt" dan qanday foydalanishni ko'rsatamiz.
Xo'sh, "bcrypt" nima?
Bcrypt - bu bir nechta tillarni qo'llab-quvvatlaydigan va maxsus parol shifrlashni ta'minlovchi xeshlash kutubxonasi. Parolingiz xavfsizligini oshirish uchun u stringingizni shifrlashda avtomatik ravishda qo'shimcha tasodifiy belgilar (tuz) ishlab chiqaradi.
Shuningdek, siz kiruvchi qatorga qancha qo'shimcha belgilar qo'shmoqchi ekanligingizni belgilashni tanlashingiz mumkin.
Bcrypt kutubxonasi xom satrlarni emas, faqat bayt kodini o'qiydi. Shuning uchun, kiruvchi parol qatorini shifrlash uchun bcryptga yuborishdan oldin, avval uni kodlashingiz kerak.
Shifrlash va kodlash bir xil narsa emas. Bu faqat shifrlash texnikasi bilan qoplanishidan oldin satrni mashina tomonidan o'qilishi mumkinligiga ishonch hosil qiladi.
Python-da parolni shifrlash uchun bcrypt-dan foydalanish
Python bcrypt parolni shifrlashni soddalashtiradi. Biz buni ramka yordamisiz bajarishga e'tibor qaratamiz. Ammo tashvishlanmang, agar siz foydalanuvchi ma'lumotlarini qanday saqlash va ularni ma'lumotlar bazasidan o'qishni tushunsangiz, protsedura ramkalarda bir xil.
o'rnatish
Siz faqat Python virtual muhitini o'rnatishingiz va keyin PyCharm kabi IDE dan foydalanishingiz kerak. Keyin kutubxona o'rnatilishi kerak:
Parolni shifrlash
Keling, matnni o'rnatgandan so'ng uni shifrlash uchun bcryptdan qanday foydalanishni ko'rib chiqaylik:
Yuqorida aytib o'tilgan Python kodi shifrlangan bayt qatorini bajaradi va chiqaradi. Ammo har safar skriptni ishga tushirganingizda, natija boshqacha bo'ladi. Bcrypt ushbu usuldan har bir foydalanuvchining maxsus shifrlangan parolga ega ekanligiga ishonch hosil qilish uchun foydalanadi.
Aytgancha, bu parolni shifrlash uchun.
Bcrypt yordamida parolni taqqoslash va tasdiqlash
Agar siz xeshlangan parolni saqlamoqchi bo'lsangiz va keyinroq uning autentifikatsiya uchun taqdim etgan foydalanuvchi paroliga mos kelishini tekshirib ko'rsangiz nima bo'ladi?
Bu oddiy. Faqat autentifikatsiya qiluvchi parolni ma'lumotlar bazasi yozuvi bilan solishtirish kerak (yoki bu holda xotirada).
Autentifikatsiya paroli ma'lumotlar bazasidagi parol bilan solishtirishdan oldin ham kodlangan bo'lishi kerak, chunki bcrypt faqat bayt satrlarini o'qiy oladi. Asosan, siz kodlangan autentifikatsiya ma'lumotlarini ma'lumotlar bazasida mavjud bo'lgan kodlangan xeshlangan parol bilan solishtirasiz.
Keling, buni xayoliy Python kirishlari yordamida sinab ko'raylik:
Yuqoridagi kodni ishga tushirgandan so'ng, sizdan yangi parol so'raladi. Bu Python tomonidan xotirada saqlanadi. Autentifikatsiya bo'limida siz o'zingiz uchun shaxsiy bo'lgan bir xil parolni kiritasiz.
Agar parol solishtirilsa va avval shifrlangan va moslikni saqlagan parol bilan taqqoslansa, Python muvaffaqiyat haqida xabar chiqaradi.
Aks holda, xato xabari chop etiladi va keyin boshqa jumla qo'shiladi.
Asosiy g'oya ro'yxatdan o'tish va keyin autentifikatsiya qilish uchun ma'lumotlar bazasiga parol berish bilan bir xil.
Xulosa
Oddiy Python qisqa xotirasida bcrypt qanday ishlashini ko'rsatish uchun oddiygina shifrlangan parollardan foydalangan bo'lsak ham, uning amalda qo'llanilishi foydalanuvchi bazasi ilovalarida yotadi.
Shunga qaramay, ushbu maqola, hatto real sharoitlarda ham buni amalga oshirish uchun kodingizni tartibga solishning muhim usullarini namoyish etadi.
Masalan, agar siz Flask dan foydalanayotgan bo'lsangiz, ro'yxatga olish va autentifikatsiya maydonlarini kirishlar o'rniga alohida veb-shakllar orqali taqdim etishingiz mumkin.
Albatta, parollarni taqqoslashda siz haqiqiy dunyoda saqlanadigan shifrlangan parollarni o'z ichiga olgan ma'lumotlar bazasidan o'qiysiz.
Jona Nitsch
Ushbu oddiy va sodda tushuntirish uchun rahmat,
Bu mening hozirgi loyihamda juda ko'p yordam berdi.
O'ylaymanki, misol kodi minimal darajada cheklangani va boshqa ko'plab tushuntirishlar kabi ortiqcha yuklanmagani juda yaxshi.
Yaxshi tilaklar