مشكلة اختطاف الجلسة غير المقصودة مع المصادقة المريحة

StackOverflow https://stackoverflow.com/questions/145169

سؤال

أنا أستخدم الإصدار الحالي من Restful_authentication الموجود على github وأواجه مجموعة من المشكلات الغريبة في الجلسة.يبدو أن الخادم يقوم بطريقة ما بتعيين جلسات للمستخدمين، وهو أمر لا ينبغي أن يكون كذلك.يحدث هذا فقط عند عبور حاجز تسجيل الخروج/تسجيل الدخول.

هنا مثال.مع عدم وجود جلسات نشطة على الخادم، قمت بتسجيل الدخول إلى حساب مع المستخدم أ.على جهاز آخر، قمت بتسجيل الدخول باستخدام المستخدم ب.ثم عند تسجيل الخروج من المستخدم ب، في وقت ما بعد حدوث إعادة توجيه تسجيل الخروج، سيتم تسجيل الدخول كمستخدم أ.من هذه النقطة، يمكنني الاستمرار في التنقل في الموقع كما لو كنت قد قمت بتسجيل الدخول بصفتي ذلك المستخدم!شيء لاحظته عبر السجلات هو أنه عندما يحدث هذا الاختطاف، فإن معرفات الجلسة ليست هي نفسها.تم تسجيل دخول المستخدم "أ" في كلتا الجلستين، لكن معرفات الجلسة مختلفة تمامًا.وهذا مجرد مثال واحد على ما يمكن أن يحدث.لا يمكنني إعادة إنتاج المشكلة بشكل موثوق لأنها تبدو عشوائية.

لا يبدو أن هذا أحد أعراض البيئة أو الخادم الذي يعمل عليه.يمكنني إعادة إنتاج المشكلة باستخدام كل من الهجين والراكب.لقد رأيت ذلك أيضًا في التطوير والإنتاج.أنا أستخدم الجلسات المستندة إلى قاعدة البيانات في هذا التطبيق وهو يعمل على Rails 2.1.1.لقد قمت بتطبيق خيار الحالة عند الاتصال بالمولد.وإلا لم يتم إجراء أي تعديلات أخرى على كيفية التعامل مع الجلسات.

التحديث هنا هو الطريقة المخالفة التي جاءت مباشرة من Restful_Authentication.

# Accesses the current user from the session.
# Future calls avoid the database because nil is not equal to false.
def current_user
  @current_user ||= (login_from_session || login_from_basic_auth || login_from_cookie) unless @current_user == false
end
هل كانت مفيدة؟

المحلول 2

لا أعرف ما إذا كانت هذه إجابة كبيرة لأنها عبارة عن حل بديل.كل ما فعلته هو التبديل إلى الجلسات المعتمدة على ملفات تعريف الارتباط وكل شيء يعمل بسلاسة.

نصائح أخرى

يمكن أن يحدث هذا إذا كنت (أو أولئك الذين كتبوا Restful_authentication) تقوم بتخزين المستخدم الحالي مؤقتًا في متغير فئة.لقد رأيت مجموعة من المقالات التي تدعو إلى استخدام "User.current_user"، ولكن بما أن الفئات يتم تخزينها مؤقتًا عبر الطلبات، فقد يؤدي ذلك إلى تشويه الجلسة.

هل هذا الموقع بعيد؟هل تقوم بتسجيل الدخول إليه على جهازي كمبيوتر منفصلين على نفس الشبكة؟

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