أنشئ ترويسة مصادقة HTTP أساسية من اسم مستخدم وكلمة مرور، واحصل على أمر curl جاهز للصق، وفك ترميز رمز Basic موجود إلى بيانات الاعتماد.
أنشئ ترويسة مصادقة HTTP أساسية، أو فك ترميز واحدة. أدخل اسم مستخدم وكلمة مرور للحصول على ترويسة التفويض، ورمز base64 الخام، وأمر curl يمكنك لصقه مباشرة في الطرفية. أداة فك الترميز أدناه تعكس رمزًا موجودًا.
فك ترميز رمز موجود
يُحسب كل شيء في متصفحك ولا يُرسَل أي شيء. ومع ذلك، تجنب لصق بيانات اعتماد الإنتاج الحقيقية في أي صفحة ويب، بما في ذلك هذه الصفحة.
كيف تعمل مصادقة HTTP الأساسية فعليًا
الآلية
مصادقة Basic، المعرّفة في RFC 7617، هي أبسط مخطط في HTTP. يدمج العميل اسم المستخدم وكلمة المرور بنقطتين (colon)، ويرمز النتيجة base64، ويرسلها في ترويسة:
Authorization: Basic YWxpY2U6czNjcjN0
عندما يريد الخادم بيانات اعتماد، يرد بـ 401 Unauthorized مع ترويسة WWW-Authenticate: Basic realm="..."، ويعرض المتصفح نافذة تسجيل الدخول الأصلية. لا يوجد مصافحة ولا nonce ولا انتهاء صلاحية — يحمل كل طلب نفس الترويسة.
Base64 ليس تشفيرًا
هذه هي النقطة التي يجب أن يستوعبها الجميع. Base64 هو ترميز نقل قابل للعكس دون مفتاح أو سر. أي شخص يرى الترويسة يمكنه فك ترميزها فورًا، وهو بالضبط ما تفعله أداة فك الترميز في هذه الصفحة. لذلك توفر مصادقة Basic صفرًا من السرية بحد ذاتها ويجب استخدامها فقط عبر HTTPS، حيث يحمي TLS الطلب بالكامل. عبر HTTP العادي، يعادل إرسال كلمة المرور كنص صريح.
قاعدة النقطتين
لا يجوز أن يحتوي اسم المستخدم على نقطة (colon)، لأن أول نقطة هي الفاصل. قد تحتوي كلمة المرور على أي عدد منها — يقسم المفكك عند الأولى ويعامل الباقي ككلمة مرور. إذا كان اسم المستخدم يحتاج حقًا إلى نقطة، فإن مصادقة Basic غير قابلة للاستخدام وتحتاج إلى مخطط مختلف.
ترميز الأحرف
كانت المواصفة الأصلية غامضة بشأن أي شيء خارج ASCII، مما تسبب تاريخيًا في كسر كلمات المرور غير ASCII بين العملاء والخوادم. أضاف RFC 7617 معامل charset="UTF-8" حتى يتمكن الخادم من تحديد توقعه، وعمليًا يستخدم كل نظام حديث UTF-8. ترمز هذه الأداة إلى وحدات UTF-8 قبل base64، مطابقةً سلوك المتصفحات الحالية.
حيث تظل منطقية
تظل مصادقة Basic خيارًا معقولاً للاتصالات بين الآلات على الشبكات الداخلية، والحماية السريعة لبيئة تجريبية خلف nginx أو Apache، ومهام CI التي تحتاج بيانات اعتماد بسيطة، وكنقل لمفاتيح API حيث يوضع المفتاح في حقل اسم المستخدم وتُترك كلمة المرور فارغة أو تُضبط على قيمة نائبة مثل x. تستخدم عدة واجهات دفع وبريد ذلك النمط تمامًا.
إنها خيار ضعيف لتسجيل دخول المستخدم النهائي على موقع عام. لا يوجد تسجيل خروج، ويخزن المتصفح بيانات الاعتماد للجلسة، ولا يمكن تخصيص نافذة الحوار، ولا توجد طريقة لإضافة مصادقة متعددة العوامل أو تقييد المعدل لكل جلسة. استخدم مخططًا قائمًا على الرمز أو الجلسة بدلاً من ذلك.
تحذيرات عملية
بيانات الاعتماد المضمنة في عنوان URL — user:pass@example.com — أصبحت مهملة ويتم حظرها أو تجريدها من معظم المتصفحات، لأنها تتسرب إلى السجل والملفات وسجلات الترويسة المرجعية (referrer). تمرير -u user:pass إلى curl يسجل أيضًا كلمة المرور في سجل shell وفي قائمة العمليات، حيث يمكن للمستخدمين الآخرين على الجهاز رؤيتها؛ فضّل -u user واترك curl يطالب بها، أو اقرأ القيمة من متغير بيئة.
الأسئلة الشائعة
هل مصادقة Basic آمنة؟
فقط عبر HTTPS. ترميز base64 لا يوفر أي حماية إطلاقًا — فمن السهل عكسه. مع TLS تكون بيانات الاعتماد محمية أثناء النقل مثل أي بيانات طلب أخرى؛ وبدون TLS فهي نص صريح فعليًا.
لماذا base64 إذا لم يكن تشفيرًا؟
الغرض منه أمان النقل، لا السرية. يضمن Base64 أن تحتوي بيانات الاعتماد على أحرف ASCII آمنة للترويسة فقط، بحيث لا يمكن لنقطة أو مسافة أو بايت غير ASCII في كلمة المرور إفساد الترويسة.
هل يمكن أن يحتوي اسم المستخدم على نقطة؟
لا. أول نقطة تفصل اسم المستخدم عن كلمة المرور، لذا تجعل النقطة في اسم المستخدم بيانات الاعتماد غامضة. قد تحتوي كلمات المرور على أي عدد من النقاط.
كيف أسجل الخروج من مصادقة Basic؟
لا توجد آلية مناسبة. تخزّن المتصفحات بيانات الاعتماد للجلسة، والحلول المعتادة هي إغلاق المتصفح أو إرجاع 401 لنقطة نهاية خاصة. هذا القيد هو أحد أسباب عدم ملاءمة مصادقة Basic لتسجيل دخول المستخدم النهائي.
هل تنتهي صلاحية الرمز؟
أبدًا. تظل نفس الترويسة صالحة حتى تتغير كلمة المرور، ولهذا فإن تسريب رمز Basic بالغ الخطورة مثل تسريب كلمة المرور. قم بتدوير بيانات الاعتماد إذا تعرض أي منها للكشف.
هل تُرسل بيانات اعتمادي إلى أي مكان؟
لا. يتم الترميز وفك الترميز بالكامل في متصفحك. ومع ذلك، من الممارسات الجيدة ألا تلصق أبدًا بيانات اعتماد إنتاج حقيقية في أي صفحة ويب.