سؤال

أنا فضولي كيف أتذكرني أن تعمل وكيف تعمل في أمن الربيع؟

أفهم أن الخادم يرسل ملفات تعريف الارتباط طويلة العمر إلى العميل. ثم يرسل العميل ملف تعريف الارتباط ويمكن الخادم التعرف على العميل لأن هناك شيء مثل خريطة Hash على الخادم مع العلاقات cookie --> session.

لا أفهم كيف تم إعادة تشغيل الخادم [تطبيق من جانب الخادم] العميل بواسطة ملف تعريف الارتباط بعد إعادة تشغيل الخادم [Tomcat].

كيف وأين ينقذ أمان الربيع cookie-session خريطة قبل إيقاف الخادم؟ هل هو خاص بالخادم (أي شيء مختلف حدث في Tomcat ، رصيف ، إلخ)؟

ملاحظة أخرى ذات صلة أخرى مع Spring Security وإعادة النشر: حتى لو لم أقم بالعلامة RememberMe وتسجيل الدخول ، ما زلت معترفًا به بعد إعادة النشر لمدة 3 دقائق. هل هو قابل للإصلاح؟

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

المحلول

تناقش مستندات أمن الربيع كيف يعمل هذا بالفعل.

يستخدم هذا النهج التجزئة لتحقيق استراتيجية مفيدة للتذكر. في جوهرها يتم إرسال ملف تعريف الارتباط إلى المتصفح عند المصادقة التفاعلية الناجحة ، مع تأليف ملف تعريف الارتباط على النحو التالي:

base64(username + ":" + expirationTime + ":" + md5Hex(username + ":" + expirationTime + ":" password + ":" + key))

...

على هذا النحو ، فإن الرمز المميز لـ Demember-Me صالح فقط للفترة المحددة ، وشريطة ألا يتغير اسم المستخدم وكلمة المرور والمفتاح. والجدير بالذكر أن هذا لديه مشكلة أمنية محتملة حيث أن رمز التذكر الذي تم التقاطه سيكون قابلاً للاستخدام من أي وكيل مستخدم حتى وقت انتهاء صلاحية الرمز المميز. هذه هي نفس المشكلة كما هو الحال مع مصادقة Digest.

يحتوي ملف تعريف الارتباط بشكل أساسي على اسم المستخدم وكلمة المرور ووقت انتهاء الصلاحية والمفتاح (الذي تحدده) ، وكل ذلك hassed معاً. عندما يرسل متصفحك محتويات ملف تعريف الارتباط هذا إلى الخادم ، أمان الربيع:

  1. يسترجع كلمة المرور من الواجهة الخلفية لاسم المستخدم المحدد
  2. يحسب md5Hex() من اسم المستخدم/كلمة المرور/الخ من قاعدة البيانات ويقارنها بالقيمة في ملف تعريف الارتباط
  3. إذا كانت تتطابق - تم تسجيل الدخول! إذا لم تكن تطابقًا ، فقد قمت بتزويد ملف تعريف ارتباط مزور أو تم تغيير اسم المستخدم/كلمة المرور/المفتاح.

الافتراض الأساسي هنا هو أن وظيفة التجزئة - md5Hex() الجزء أعلاه - يوفر وسيلة لتشفير بعض البيانات بسهولة في اتجاه واحد ، لكن من الصعب بشكل لا يصدق وغير عملي للعكس (لاستعادة كلمة المرور من md5Hex نص).

نصائح أخرى

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

يتم إرسال ملف تعريف الارتباط للجلسة بواسطة الخادم (على سبيل المثال TOMCAT) ويستخدم لربط الطلب الوارد مع الجلسة.

تذكرني يتم إرسال ملف تعريف الارتباط بواسطة Spring Security لمصادقة العميل في الجلسات المختلفة (على سبيل المثال بعد انتهاء الجلسة الأصلية أو بعد إعادة تشغيل الخادم).

لمصادقة المستخدم عن طريق تذكر Me Cookie Spring Security يوفر استراتيجيتين:

  • TokenBasedRememberMeServices - يستخدم ملف تعريف الارتباط بشكل افتراضي ، أقل أمانًا - على تجزئة من كلمة المرور والبيانات الأخرى
  • PersistentTokenBasedRememberMeServices - أكثر أمانًا ، يتطلب الوصول إلى قاعدة البيانات - contain contain
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top