كيفية الحد من ملفات تعريف الارتباط PHPSESSID إلى HTTPS؟

أرغب في تقييد استخدام ملف تعريف الارتباط الخاص بـ phpsessid فقط من أجل الاتصالات الآمنة أثناء جلسات المسؤول ، ولكن اسمح ل phpsessid باتصالات غير آمنة للمستخدمين العاديين. يجب استدعاء session_set_cookie_params في كل مرة يتم فيها تشغيل البرنامج النصي قبل استدعاء session_start() ، لكنني بحاجة إلى استدعاء session_start() أولاً للتحقق من بيانات الجلسة التي تخبرني إذا كان المستخدم مسؤولاً أم لا.

أرغب في الحصول على صفحات يمكن الوصول إليها فقط من خلال https (لوحات المشرف ، تسجيلات الدخول ، إلخ) وبقية الموقع (المقالات ، إلخ) المتاحة من خلال الاتصالات العادية للمستخدمين العاديين فقط من خلال الاتصالات الآمنة للمسؤولين. بحيث لا يتم عرض sid المسؤول أبدًا؛ تعريض sid والاعتماد فقط على IP ، وكيل المستخدم ، وما إلى ذلك الشيكات ليست كافية. المعاملات الهامة ستكون محمية بكلمة مرور ولكن من المستحيل أن يكون مع جميع المعاملات ، سيكون لالغذر.

0
وأضاف المؤلف Cheekysoft, مصدر

2 إجابة

في PHP ، يمكنك تعيين session.use_only_cookies و session.cookie_secure خيارات التكوين. يمكن القيام بذلك في وقت التشغيل أو في php.ini الخاص بك. cookie_secure هو اسم فظيع ، لكنه يخبر العميل أن ملف تعريف الارتباط هذا يجب أن ينتقل دائمًا عبر https.

0
وأضاف

قد يكون الأسلوب السهل هو استخدام session_name() وتعيين اسم الجلسة. ثم ابدأ فقط "جلسة عمل المشرف" على الصفحات التي هي صفحات المسؤول و HTTPS.

0
وأضاف
مثيرة للاهتمام ، ولكن ليس الحل الأفضل.
وأضاف المؤلف rook, مصدر
شكر. لقد كنت أحاول ، ويبدو أن العمل. بعض الأشياء الواجب مراعاتها: 1) في كل مرة ، قبل session_start() تحتاج إلى التحقق مما إذا كان ملف تعريف ارتباط جلسة العمل موجودًا و call_name (admin_session_name) إذا كان الأمر كذلك. 2) عند تسجيل الخروج: call session_regenerate_id (true) ، session_write_close() ، إذا تغيرت session_name (set_session_cookie_params ، وقمت بتعطيل ملف تعريف ارتباط الجلسة السابقة ، واستدعاء session_name باسم الجلسة الجديد) ، وأخيرًا استدعاء session_start ()
وأضاف المؤلف dhinchliff, مصدر
تجاوز هذا الأمر في وقت لاحق ، الآن لاحظت أنني ذهبت بهذه الطريقة لأن المستندات تقول أن set_session_cookie_params يحتاج إلى استدعاء كل برنامج نصي يعمل قبل session_start (). ولكن الطريقة التي انتهى بها الأمر هي أن أدعوك set_session_cookie_params على تسجيل الدخول/الخروج إذا كان نوع الجلسة (عادي أو مسؤول) يتغير ، وهو يعمل. يبدو أن هناك خطأ ما في المستندات.
وأضاف المؤلف dhinchliff, مصدر
ما زلت أجد استخدام اسم جلسة مختلفة للمدراء مفيدة. إذا لم يكن الأمر كذلك ، بعد تسجيل الدخول كمسؤول ، فطلب أي عنوان url http url ستحصل على ملف تعريف ارتباط غير آمن جديد سيحل محل ملف تعريف الارتباط السابق ، ويفقد متصفحك مسار معرف جلسة الإدارة. أقوم أيضًا بالتحقق من عدم تلقي ملف تعريف الارتباط الخاص بجلسة عمل المشرف من خلال اتصال غير آمن ، فهذا ليس عبثًا ، بهذه الطريقة وجدت أن فايرفوكس سيرسل ملف تعريف الارتباط الآمن بشكل غير صحيح عبر اتصال غير آمن إذا كنت في صفحة https ثم قمت بحذف ' ق 'وضرب الدخول ؛ لا إذا كتبت عنوان url جديدًا أو تتبع رابط http. لا مشكلة مع المتصفحات الأخرى.
وأضاف المؤلف dhinchliff, مصدر
سعيد أنه أشار لك في الاتجاه الصحيح. يرجى وضع علامة على السؤال كما تمت الإجابة عنه إذا تم حل مشكلتك.
وأضاف المؤلف Brian, مصدر