تسجيل الدخول الأعضاء الآمن باستخدام ملفات تعريف الارتباط
-
22-09-2019 - |
سؤال
تخزين اسم االمستخدم & كلمه السر من المستخدم في ملف تعريف الارتباط ممارسة جيدة؟ أريد حقًا أن أعرف كيف تحب المواقع الكبيرة (Facebook ، Digg ، Twitter) امسك هذا. الرمز الخاص بي مثل ذلك:
<?php
$username = mysql_real_escape_string($_POST['username']);
$password = md5($_POST['password']);
?>
بعد كل تسجيل الدخول الناجح أقوم بتخزين $username
و ال $password
(MD5) في ملف تعريف الارتباط. وتجديد معرف الجلسة مع session_regenerate_id()
ولأصادف المستخدم ، أتحقق مما إذا كانت جلسة تسجيل الدخول موجودة ، وإلا فإنني أؤكد ملفات تعريف الارتباط.
أيه أفكار؟ شكرًا
المحلول
أنا مرتبك بعض الشيء - هل تستخدم جلسات PHP أو ملفات تعريف الارتباط؟
إذا قمت بتخزين البيانات في جلسة ($_SESSION['username'] = 'Tom'
وما إلى ذلك) ، لا يتم تخزين هذه البيانات في ملف تعريف الارتباط للمستخدم.
إذا قمت بتخزين البيانات في ملف تعريف ارتباط منفصل (لشيء مثل تسجيل الدخول التلقائي) ، فقد ترغب في تخزين معرف عشوائي مختلف بدلاً من ذلك ، والبحث عن معرف المستخدم جدول قاعدة البيانات.
autologins
----------
key (random hash)
user_id
expires
نصائح أخرى
فقط MD5 لا يكفي ، يجب عليك على الأقل تضمين "ملح" عشوائي (سلسلة عشوائية صغيرة من الأحرف) التي تقوم بتخزينها في قاعدة البيانات الخاصة بك.
تحرير: راجع للشغل ، هل قمت بتخزين كلمة المرور العادية أو المشفرة؟ يمكن أن يكون ذلك مخاطرة أمنية أكبر.
الممارسة القياسية هي إعطاء المستخدم معرف جلسة في ملف تعريف الارتباط ، إما نفسك أو باستخدام جلسات PHP. لا يزال يتم تخزين اسم المستخدم وكلمة المرور في ملف تعريف الارتباط من قبل بعض المواقع ، لكنني أفضل الأول. يتيح لك إعطاء المستخدمين مزيدًا من التحكم في تسجيلات تسجيل الدخول الخاصة بهم ، حتى يتمكنوا من معرفة عدد الجلسات التي لديهم وأي بروتوكول الإنترنت ، على سبيل المثال - انظر Gmail للحصول على مثال جيد.
فيما يتعلق بموضوع الأملاح والتجزئة ، يجب عليك تخزين تجزئة كلمة المرور في قاعدة البيانات المملحة. من الناحية المثالية ، يجب أن يكون الملح مختلفًا لكل مستخدم. في حالة سرقة قاعدة البيانات الخاصة بك أو المكشوفة ، فإن هذا سيجعل من الصعب على المهاجم الحصول على كلمات مرور (إذا استخدموا جميعًا نفس الملح ، فيمكنهم إنشاء طاولات قوس قزح لهذا الملح ، والتي تستغرق وقتًا طويلاً ، لكنها ستسمح ثم كسر كلمات المرور بسرعة كبيرة). للأمان ، يجب أن يحتوي الملح أيضًا على بعض الأحرف غير الأبجدية ، مثل ٪ $ &^.
إجابة جويل ل. الشيء الوحيد الذي سأضيفه هو أنه بدلاً من معرف عشوائي ، يمكنك إضافة بعض المعلومات الإضافية التي تحدد المستخدم لجعله أكثر أمانًا.
على سبيل المثال ، استخدم علامة تجزئة لعنوان IP الخاص بالمستخدم والملح ، ويوفر أمانًا إضافيًا ضد شخص ما يسرق أو استنشاق ملف تعريف الارتباط لأمان المستخدم.
أظن أن Twitter يستخدم شيئًا كهذا ، وهذا هو السبب في أنه لا يمكنك تسجيل الدخول بشكل دائم إلى Twitter من جهاز كمبيوتر واحد في وقت واحد.