يجب ألا تحتفظ أبدًا بكلمة المرور في نص عادي أثناء تأكيد المستخدم أو القيام بشيء مماثل.
نظرًا لأن العديد من الأفراد يستخدمون نفس كلمة المرور ، إذا اكتشف المهاجم قاعدة بيانات لكلمات المرور غير المشفرة ، فيمكن استخدامها بسهولة جنبًا إلى جنب مع رسائل البريد الإلكتروني المطابقة للدخول إلى موقع الويب المرتبط أو الحساب وحتى استخدامها لمحاولة الوصول إلى حسابات أخرى.
غالبًا ما يتم تجزئة كلمات المرور اليوم عند توفير كلمة مرور. يُنصح بالتجزئة بالملح والاحتفاظ بالملح مع كلمة المرور المجزأة.
قد يبدو التمليح كإحدى الخطوات في وصفة لبراون التجزئة ، ولكن في التشفير ، يشير إلى إضافة بيانات عشوائية إلى مدخلات دالة التجزئة للتأكد من أن التجزئة ستوفر دائمًا نتيجة فريدة حتى لو كانت المدخلات متطابقة.
نتيجة لذلك ، يمكن للتجزئة المميزة التي تم إنشاؤها عن طريق إضافة الملح أن تدافع عنا من عدة طرق هجوم ، بما في ذلك هجمات جدول التجزئة ، بينما تخنق القاموس ومحاولات القوة الغاشمة غير المتصلة بالإنترنت.
هنا ، بمساعدة مقتطفات التعليمات البرمجية ، سنشرح كيفية استخدام "bcrypt" لتأمين كلمات المرور الخاصة بك.
إذن ، ما هو "bcrypt"؟
Bcrypt هي مكتبة تجزئة تدعم عدة لغات وتوفر تشفيرًا خاصًا لكلمات المرور. لزيادة أمان كلمة المرور الخاصة بك ، فإنها تنتج تلقائيًا أحرفًا عشوائية إضافية (ملح) عند تشفير السلسلة الخاصة بك.
يمكنك أيضًا اختيار تحديد عدد الأحرف الإضافية التي ترغب في إضافتها إلى سلسلة واردة.
تقرأ مكتبة bcrypt كود البايت فقط ، وليس السلاسل الأولية. لذلك ، قبل إرسال سلسلة كلمة المرور الواردة إلى bcrypt للتشفير ، يجب عليك أولاً تشفيرها.
التشفير والتشفير ليسا نفس الشيء. إنه يتأكد فقط من أن السلسلة يمكن قراءتها آليًا قبل أن يتم تغطيتها بواسطة تقنية تشفير.
استخدام bcrypt لتشفير كلمة مرور في Python
يجعل Python تشفير كلمة مرور bcrypt أمرًا بسيطًا. سنركز على القيام بذلك دون مساعدة إطار العمل. لكن لا تقلق ، إذا فهمت كيفية حفظ مدخلات المستخدم وقراءتها من قاعدة البيانات ، فإن الإجراء هو نفسه في أطر العمل.
التنزيل
ما عليك سوى إعداد بيئة افتراضية Python ثم استخدام IDE مثل PyCharm. يجب بعد ذلك تثبيت المكتبة أولاً:
تشفير كلمة المرور
دعونا نرى كيفية استخدام bcrypt لتشفير نص بعد تثبيته:
شفرة بايثون المذكورة أعلاه تنفذ وتخرج سلسلة بايت مشفرة. لكن في كل مرة تقوم فيها بتشغيل البرنامج النصي ، تكون النتيجة مختلفة. يستخدم Bcrypt هذه الطريقة للتأكد من أن كل مستخدم لديه كلمة مرور مشفرة على وجه التحديد.
هذا ، بالمناسبة ، هو لتشفير كلمة المرور.
مقارنة وتأكيد كلمة المرور باستخدام Bcrypt
ماذا يحدث إذا كنت ترغب في حفظ كلمة المرور المجزأة والتحقق لاحقًا لمعرفة ما إذا كانت تتطابق مع كلمة المرور التي أرسلها المستخدم للمصادقة؟
هذا بسيط. يجب مقارنة كلمة مرور المصادقة فقط بإدخال قاعدة البيانات (أو في الذاكرة في هذه الحالة).
يجب أيضًا تشفير كلمة مرور المصادقة قبل مقارنتها مع تلك الموجودة في قاعدة البيانات لأن bcrypt لا يمكنه قراءة سوى سلاسل البايت. في الأساس ، ستقارن إدخال المصادقة المشفر بكلمة المرور المشفرة الموجودة حاليًا في قاعدة البيانات الخاصة بك.
دعنا نختبر ذلك باستخدام مدخلات بايثون الوهمية:
عند تشغيل الكود المذكور أعلاه ، ستتم مطالبتك بكلمة مرور جديدة. يتم حفظ هذا في الذاكرة بواسطة بايثون. في قسم المصادقة ، ستقوم بعد ذلك بإدخال نفس كلمة المرور الخاصة بك.
إذا تمت مقارنة كلمة المرور وتلك التي تم تشفيرها وحفظها مسبقًا ، فإن Python ترسل رسالة نجاح.
إذا لم يكن الأمر كذلك ، فستتم طباعة رسالة الخطأ ثم تتم إضافة جملة else.
الفكرة الأساسية مماثلة لفكرة التسجيل ثم توفير كلمة مرور لقاعدة بيانات للمصادقة.
وفي الختام
على الرغم من أننا استخدمنا كلمات مرور مشفرة لإظهار كيفية عمل bcrypt في ذاكرة Python القصيرة العادية ، فإن قابليتها للتطبيق الفعلي تكمن في تطبيقات قاعدة المستخدمين.
ومع ذلك ، توضح هذه المقالة الطرق الأساسية لتنظيم التعليمات البرمجية الخاصة بك لتحقيق ذلك ، حتى في ظروف العالم الحقيقي.
على سبيل المثال ، إذا كنت تستخدم Flask ، فيمكنك توفير حقلي التسجيل والمصادقة عبر نماذج ويب منفصلة بدلاً من المدخلات.
بالطبع ، أثناء مقارنة كلمات المرور ، ستقرأ من قاعدة بيانات تحتوي على كلمات مرور مشفرة محفوظة في العالم الحقيقي.
جونا نيتش
شكرا لك على هذا الشرح البسيط والبسيط ,
لقد ساعدني هذا كثيرًا في مشروعي الحالي.
أعتقد أنه من الجيد جدًا أن يقتصر رمز المثال على الحد الأدنى وليس مثقلًا مثل العديد من التفسيرات الأخرى.
مع أطيب التحيات