JBoss 5 اقتطاع زائدة = من سلسلة ملفات تعريف الارتباط Base64

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

سؤال

بعد الترقية من JBoss 4 إلى JBOSS 5، لاحظت الانحدار الأكثر إزعاجا. يقوم باقتطاع علامة متساوية الزائدة ('=') من قيمة ملف تعريف الارتباط Base64.

استغرق الأمر من الوقت الذي استغرق الكثير من الوقت لفهم أن المشكلة لم تكن شفويا ولكن JBoss '، لقد جوجدته ومعرفة ذلك مشكلة .

العمل المقترح حوله هو حساب طول السلسلة والمنصة مع علامات متساوية زائدة (إلى طول تعدد 4).

نظرا لأن تطبيقنا يمكن أن يعمل على العديد من خوادم التطبيقات (مثل Weblogic، Webspehere)، فأنا متردد جدا في إضافة هذه القطعة من التعليمات البرمجية المحددة لهذا الإصدار من JBoss.

هل يواجه أي شخص هذا؟ هل يمكن أن تقترح حلوة أكثر ذكاء؟

تعديل: بفضل Skaffman فهمت مشكلتي، لا يجب أن أكون قد استخدمت Base64 للحصول على سلسلة ملفات تعريف الارتباط في المقام الأول. هناك تبديل على قاعدة 64 يسمى عنوان url base64 يجب استخدامها لمثل هذه السلاسل (ملفات تعريف الارتباط، عناوين URL ...). يدعم برنامج ترميز Library Apache على سبيل المثال هذا البديل في تطبيقه الأساسي 64.

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

المحلول

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

بدلا من ذلك، يمكنك اللعب مع بسكويت API قليلا. جافادوك ل cookie.setvalue () يقول:

مع الإصدار 0 ملفات تعريف الارتباط، يجب ألا تحتوي القيم على مساحة بيضاء وقوسين وأقواس، يساوي علامات, ، فواصل، ونقلت مزدوجة، مائلة، علامات استفهام، في علامات، كولون، وهاتف. قد لا تتصرف القيم الفارغة بنفس الطريقة على جميع المتصفحات.

من الناحية الفنية، فإن ترميز Base64 غير متوافق مع نسخة من ملفات تعريف الارتباط 0، والتي قد تكون الافتراضي. يمكنك محاولة الاتصال setVersion(1) على ملف تعريف الارتباط، ومعرفة ما إذا كان ذلك يحدث فرقا، على الرغم من أنك تقوم بتشغيل مخاطر مشكلات توافق المتصفح.

نصائح أخرى

إذا فهمت تقرير الأخطاء بشكل صحيح، فإن التنفيذ الصحيح للتشفير سيؤدي دائما إلى إنتاج سلسلة متعددة من 4، لذلك إذا قمت بإضافة إصلاح الأخطاء، فلن يؤدي ذلك إلى خوادم التطبيق الأخرى من JBOSS. سوف يعمل الكود الخاص بك بالتالي على جميع الخوادم. في ملاحظة جانبية، ربما يمكنك تنفيذها كمرشح Servlet، والتي ستكون تدخلية في الحد الأدنى لك.

ل JBOSS 5 تعيين خاصية النظام أدناه:

org.apache.catalina.strict_servlet_compliance = خطأ

- الحرب

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