سؤال

لدي نظام تسجيل الدخول. كيف يمكنني تنفيذ آمنة تذكرنى النظام باستخدام ملفات تعريف الارتباط.

ما هي القيمة التي يجب علي تخزينها في اسم مستخدم ملفات تعريف الارتباط وكلمة المرور ، ولكن كيف يمكنني تأمينها؟

هل كانت مفيدة؟

المحلول

حدد مستخدم Salt Foreach في DB ثم

على الإعداد

$expire_time = time() + 2 * 7 * 24 * 3600; // 2 weeks exp time

setcookie( 
    "rememberMe",
    crypt($username, $salt),
    $expire_time,
    '/'
);

على التحقق من التحقق

$_COOKIE['rememberMe'] === crypt($username, $salt)

نصائح أخرى

ربما يمكنك إنشاء سلسلة/أرقام من 16 حرفًا مرتبطًا في قاعدة بيانات مع هذا المستخدم وعنوان MAC بحيث (طالما لا يحاول الأشخاص بجد للغاية ويخفف من أجهزة Mac) فقط يمكن لهذا الجهاز تسجيل الدخول.

ربما يجب عليك تخزين (في DB) IP الزائر أو وكيل المستخدم أو المنطقة الزمنية أو المكونات الإضافية المثبتة. شيء قد يكون من السهل استخدام JavaScript ، لأن الحصول على عنوان MAC قد يكون مشكلة.

بعد ذلك ، يمكنك التحقق من ما إذا كان لدى المستخدم نفس IP أو UA أو المنطقة الزمنية أو الإضافات في المرة الأخيرة :) أو يمكنك استخدام MaxMind للتحقق من موقعه وتأكيد ما إذا كان يستخدم المنطقة الزمنية الصحيحة. إذا كان هناك أي شيء مشبوه ، فيجب عليك تجاهل بيانات اعتماد ملفات تعريف الارتباط.

لا يوجد الكثير لذلك ... لا تدع ملفات الجلسة الخاصة بك يتم تنظيفها (إعداد INI session.gc_probability = 0) ، وتغيير ملف تعريف الارتباط الجلسة من مؤقت إلى دائم (إعداد INI session.cookie_lifetime = however_long_you_want_the_user_to_be_remembered).

بالطبع ، ربما ترغب في تنظيف ملفات الجلسة التي لا معنى لها في النهاية ، حتى تتمكن من تجربة أ جداً احتمال انخفاض التنظيف يحدث ، أو القيام ببعض التنظيف الخارجي. في كلتا الحالتين ، طالما أن المستخدم يحتفظ بملف تعريف الارتباط للجلسة وتحافظ على ملف الجلسة حوله ، سيتم "تذكره".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top