سأضع قيمة مرمّزة بصيغة Base64 داخل رابط، هل أختار الأبجدية الآمنة للروابط أم أحذف علامات = من النهاية؟

لرابط أو اسم ملف اختر «صيغة آمنة للروابط»، لأن Base64 القياسي قد يحتوي + و/ ولكل منهما معنى في الرابط، والصيغة الآمنة تكتب بدلهما - و_. أما حذف علامات = فاختياري ويوفر حرفًا أو اثنين، بشرط أن يقبل النظام المستقبل القيمة دون حشو. هذه الأداة تفك الصيغتين.

نُشر في · دقائق قراءة: 2

أين تظهر المشكلة فعلًا؟

كثير من القيم لا يظهر فيها + ولا / أصلًا، فتبدو الصيغتان متطابقتين. رمّزنا كلمة «عرض» بالصيغتين فكان الناتج واحدًا: 2LnYsdi2. لذلك قد يعمل رابطك في التجربة ثم يفشل مع قيمة أخرى. المشكلة تظهر فقط حين تحتوي البايتات على تركيبات معينة. مثال قصير يظهر فيه الرمز /:

YT4/

هذا ترميز النص القصير a>? بالأبجدية القياسية. وبالصيغة الآمنة للروابط صار YT4_. ومثال آخر: النص order?id=5 أعطى بالقياسية b3JkZXI/aWQ9NQ==، وبالصيغة الآمنة مع «بدون حشو» أعطى b3JkZXI_aWQ9NQ.

لماذا يضر + و/ في الرابط؟

  • الرمز / يفصل أجزاء المسار، فقيمة فيها / داخل المسار تبدو كأنها مجلدان.
  • الرمز + قد يُقرأ مسافة في قيم الاستعلام، فتصل القيمة إلى الخادم بمسافة بدل +، ويفشل فكها.
  • الرمز = يفصل الاسم عن القيمة في الاستعلام. أغلب الأنظمة تتحمله في نهاية القيمة، لكن بعضها لا يفعل.

الصيغة الآمنة تحل أول مشكلتين تمامًا. أما الثالثة فيحلها «بدون حشو».

أي الخيارين تفعّل؟

  • القيمة ستوضع في مسار رابط أو في اسم ملف: فعّل «صيغة آمنة للروابط». هذا هو الأهم.
  • القيمة ستوضع في استعلام بعد علامة ?: فعّل الصيغة الآمنة، وفعّل «بدون حشو» إن كان النظام المستقبل يقبل ذلك، كما في رموز JWT.
  • النظام المستقبل ينص على Base64 القياسي: لا تفعّل شيئًا، ورمّز الناتج بعد ذلك بأداة ترميز وفك ترميز الروابط في وضع «جزء من رابط»، فتصبح + هي %2B و/ هي %2F و= هي %3D.

الخطوات

  1. افتح ترميز وفك Base64 واختر «ترميز».
  2. اكتب القيمة أو اختر ملفًا.
  3. فعّل «صيغة آمنة للروابط»، ثم «بدون حشو» إن احتجت.
  4. انسخ الناتج وضعه في الرابط.

وعند الفك؟

لا تحتاج إلى اختيار شيء. الأداة تكتشف الأبجدية بنفسها وتذكرها في الملخص: فككنا YT4_ فعادت «a>?» وذكرت الأداة أن الأبجدية المكتشفة هي الآمنة للروابط. والحشو الناقص يُكمل مع ملاحظة. لكن الخلط بين الأبجديتين في قيمة واحدة يُرفض: جربنا Pz8/Pz8_ فظهرت رسالة بأن النص يخلط بين الأبجدية القياسية والآمنة للروابط. هذا يحدث عادة حين يُعدَّل جزء من القيمة يدويًا.

وتذكّر أن الصيغة الآمنة للروابط تعني «آمنة للكتابة داخل رابط» لا «آمنة من القراءة». أي شخص يرى الرابط يستطيع فك القيمة، فلا تضع فيها ما لا تريد أن يُقرأ.

أسئلة شائعة

هل تتغير البيانات حين أختار الصيغة الآمنة؟

لا. البايتات نفسها، والذي يتغير رمزان فقط في الأبجدية: - بدل + و_ بدل /.

لماذا لا يعمل الخياران مع «إخراج رابط data»؟

لأن رابط data يستخدم دائمًا الأبجدية القياسية مع الحشو، فتتجاهل الأداة الخيارين وتذكر ذلك.

كم حرفًا يوفر حذف الحشو؟

حرفًا أو اثنين في آخر القيمة، حسب طول البيانات. في مثال order?id=5 وفّر حرفين.