ترجمة آلية لم تُراجَع بعد. النص الإنجليزي هو المرجع في حال الاختلاف.
الملخص
تثبيت الجلسة في Apache Wicket. الفئة org.apache.wicket.authroles.authentication.AuthenticatedWebSession هي فئة أساس المصادقة لوحدة الأمان المستندة إلى الأدوار في Wicket، وتُعد طريقة signIn(String, String) الخاصة بها نقطة الدخول التي يقوم التطبيق من خلالها بمصادقة الجلسة. يُعد تجديد معرف جلسة الحاوية في تلك النقطة الدفاع القياسي ضد مهاجم قام بتثبيت معرف جلسة في متصفح الضحية، ويوفر Wicket هذا التجديد باسم org.apache.wicket.Session#changeSessionId()، والتي توجّه وثائقها المستدعين لاستدعائها عند تسجيل الدخول لهذا السبب بالذات. تستدعي AuthenticatedWebSession#signIn(String, String) الدالة داخل شرط حراسة ينجح فقط عند الانتقال الأول لعلامة تسجيل الدخول الخاصة بالجلسة. ونتيجة لذلك، يتم تجديد معرف الجلسة عند تسجيل الدخول لأول مرة، ولا يتم تجديده عندما تقوم جلسة مسجلة الدخول بالفعل بالمصادقة مرة أخرى. تُرجع الدالة signIn(String, String) القيمة true في كلتا الحالتين، لذا لا يمكن للمستدعي ولا للتطبيق معرفة أن التجديد لم يحدث. يتأثر التطبيق عندما يقوم بالمصادقة من خلال AuthenticatedWebSession، وهو ما تتطلبه AuthenticatedWebApplication وتستخدمه لوحة UsernamePasswordPanel المدمجة، وعندما تستطيع جلسة مسجلة الدخول بالفعل إجراء المصادقة مرة أخرى: مثل مطالبة ترقية الصلاحيات قبل إجراء حساس، أو تبديل الحساب، أو ببساطة نموذج تسجيل دخول يظل قابلاً للوصول بمجرد تسجيل دخول المستخدم. لا يوجد شيء في الوحدة يخفي هذا النموذج عن جلسة مسجلة الدخول. يتطلب الوصول إلى الخلل أيضًا أن يضع المهاجم معرف جلسة من اختياره في متصفح الضحية. يتم تعيين JSESSIONID بواسطة حاوية السيرفلت بدلاً من Wicket، لذا يتطلب ذلك وضعاً لا يمنحه Wicket، مثل التحكم في مضيف تحت نفس النطاق القابل للتسجيل أو حاوية مُكوّنة لحمل معرف الجلسة في عنوان URL، ويجب أن تكون الجلسة المزروعة جلسة قد قام المهاجم بالمصادقة عليها بالفعل، لأن الجلسة التي لم يتم تسجيل دخولها بعد يتم تجديد معرفها بواسطة مصادقة الضحية.