أدوات المطور · URL التشفير وفك التشفير
RFC 3986 الأحرف المحجوزة وغير المحجوزة: ما يقوله معيار URI
· خلفية
ترميز URL rfc3986 ترميز النسبة المئوية
RFC 3986 يقسم الأحرف إلى محجوزة وغير محجوزة وكل شيء آخر، ويشرح هذا التقسيم كل قاعدة ترميز مئوية واجهتها. يقرأ هذا المنشور الأقسام ذات الصلة بوضوح.
RFC 3986 الأحرف المحجوزة وغير المحجوزة - ما يهم عند إنشاء عناوين URL
RFC 3986 يقسم الأحرف إلى ثلاث فئات: غير محجوزة، ومحفوظة، وكل شيء آخر يجب تشفيره. لا تحتاج الأحرف غير المحجوزة إلى أي تشفير أبدًا، فهي عبارة عن أحرف وأرقام وواصلة ونقطة وشرطة سفلية وتيلدا. يسرد RFC هذه العناصر بشكل صريح في القسم 2.3، موضحًا أنه من الآمن تركها بدون تشفير في أي سياق URI. يُظهر الاختبار في برنامج التشفير ووحدة فك التشفير URL باستخدام هذه الأحرف أنها تمر دون تغيير. تنقسم الأحرف المحجوزة إلى علامات فرعية (: / ? # [ ] @) وعلامات فرعية (! $ & ' ( ) * + , ; =)، ولكل منها معنى هيكلي في مكونات URL المختلفة.
متى تحتاج الشخصية إلى الترميز؟ يجب أن تكون الأحرف المحجوزة مشفرة بنسبة مئوية فقط عندما تؤدي إلى الغموض. تشير الشرطة المائلة إلى مقاطع المسار؛ في قيمة الاستعلام، يجب أن تكون %2F. علامة الضم تفصل بين المعلمات؛ & في القيمة يتطلب %26. لا تحتاج الأحرف غير المحجوزة إلى أي تشفير أبدًا، فالواصلة تظل واصلة. يضمن معيار URL التحليل الصحيح. الاختبار باستخدام برنامج التشفير ووحدة فك التشفير URL: إدخال "hello/world" باستخدام encodeURIComponent ينتج عنه "hello%2Fworld"؛ مع encodeURI فإنه يحافظ على الشرطة المائلة.
غير محجوزة: الأحرف والأرقام والواصلة والنقطة والشرطة السفلية والتلدا - وهي الأحرف التي لا تحتاج إلى تشفير أبدًا ولا ينبغي تشفيرها أبدًا
يستخدم ترميز النسبة المئوية %HH حيث يكون HH عبارة عن تدوين سداسي عشري. ASCII الحرف A (الرمز 65) يصبح %41. غير ASCII é يتطلب تشفير UTF-8: é (U+00E9) يصبح %C3%A9. تحدد المعايير الحديثة UTF-8 بشكل موحد عبر المتصفحات.
تحتاج عناوين URL الكاملة إلى بنية هيكلية سليمة؛ تحتاج قيم الاستعلام إلى أحرف محجوزة داخلية غير ضارة. يجب أن تقوم معلمة الاستعلام ?q=R&D بترميز & كـ %26 إذا كان يدويًا، وإلا فإن علامة الضم تصبح فاصلة. تصبح القيم ذات الخطوط المائلة للأمام %2F في وضع المكون. يعالج تشفير المكونات (encodeURIComponent) هذا عن طريق تشفير كل شيء باستثناء الحروف والأرقام و- _ غير المحفوظة. ! ~ * '( ). يُظهر الاختبار الفرق بين الطرق بوضوح.
محجوز: gen-delims و sub-delims - المجموعتان وأعضاؤهما وأدوارهما الهيكلية
توضح سلاسل الاستعلام سبب أهمية الأحرف المحجوزة. علامة الضم تفصل بين أزواج المفتاح=القيمة: ?utm_source=email&utm_campaign=sale يعني معلمتين. داخل القيمة، علامة الضم التي لم يتم إلغاؤها تنتهي بالزوج. يساوي يفصل المفاتيح عن القيم. يحدث التحليل في طبقات متعددة؛ كل ينطبق نفس القواعد.
تتضمن الأحرف التي تتطلب تشفيرًا في قيم الاستعلام علامة الضم والمساواة والتجزئة وعلامة الاستفهام والمسافات والأحرف التي لا تحتوي على ASCII. التجزئة هي الأكثر سرية: #anything يصبح معرف جزء، لا يتم إرساله إلى الخادم أبدًا. تفقد أسماء الحملات التي تنتهي بالتجزئة كل شيء بعدها قبل أن يغادر الطلب المتصفح. يجب أن تصبح المسافات %20. يُظهر الاختبار باستخدام برنامج التشفير ووحدة فك التشفير URL أوضاع المكونات والنماذج. فهم الموقف يحدد حاجة الترميز.
عندما يجب ترميز الأحرف المحجوزة - فقط عندما يتم الخلط بينها وبين محدد، مكونًا تلو الآخر
يستمر التشفير بالنسبة المئوية في RFC 3986. تظل المجموعة غير المحجوزة صغيرة الحجم مما يضمن إمكانية النقل. يمكن فك تشفير الأحرف غير المحجوزة المشفرة بنسبة مئوية دون تغيير المعنى. فك تشفير %41 إلى A صحيح لأن A غير متحفظ. فك تشفير %2F إلى / يغير المعنى عندما تكون الشرطة المائلة بيانات وليست فاصلة. RFC 3986 قسم التسوية 6 يغطي الأساليب النحوية.
الشخصيات المحجوزة في مواقع مختلفة لها أدوار مختلفة. القولون في المخطط يمثل المخطط: حدود السلطة؛ النقطتان في معلومات المستخدم هي البيانات. علامة الاستفهام تفتح قسم الاستعلام؛ الشرطة المائلة في قيمة الاستعلام حرفية. علامات التجزئة جزء تبدأ. يحدد الموضع الحاجة إلى الترميز. تحمل سلاسل الاستعلام قيمًا تمثل في حد ذاتها عناوين URI. يتطلب ترميز إعادة التوجيه URL مثل https://example.com/page?param=value كمعلمة ترميز الخطوط المائلة والنقطات إلى %2F و%3A. يحدد السياق الأحرف الآمنة دائمًا.
مثال عملي: تصنيف كل حرف من URL حقيقي - غير محجوز، محجوز كمحدد، محجوز كبيانات
RFC 1738 (1994) تعتبر العديد من الأحرف غير آمنة. ومع توحيد عمليات النشر في UTF-8، خففت المعايير اللاحقة القيود. التلدة (~) تمثل التطور: RFC 1738 مطلوب %7E، RFC 2396 (1998) نقل التلدة إلى غير محجوزة، RFC 3986 تم التأكيد حالة غير محفوظة. يعكس التطور دروس النشر. تحافظ المعايير على التوافق مع الإصدارات السابقة.
RFC تسمح التسوية بفك تشفير الأحرف غير المحجوزة ذات النسبة المئوية غير الضرورية. %41 يتم تطبيعه بأمان إلى A. الأحرف المحجوزة المشفرة مثل %2F لا يتم فك تشفيرها مطلقًا؛ تغيير المعنى يكسر البنية. يستخدم الإجماع الحديث RFC 3986 كخط أساس مرجعي. يتبع برنامج التشفير ووحدة فك التشفير URL RFC 3986 طوال الوقت، مما يوفر مرجعًا ثابتًا منفصلاً عن سلوك المتصفح. WHATWG URL يضيف المعيار مجموعات ترميز خاصة بالمكونات تتجاوز RFC. المعايير موجودة: RFC 3986 للتحليل العام URL، WHATWG لمتصفحات الويب. تختلف المكتبات؛ التحقق من الوثائق.
إرشادات التسوية في القسم 6 — الحالة السداسية وقواعد فك التشفير غير المحجوزة وقطاع المسار
يضمن الاختبار مقابل RFC 3986 أن تعمل عناوين URL عبر البرامج الممتدة لعقود من الزمن. يوفر برنامج التشفير ووحدة فك التشفير URL خط الأساس للترميز RFC 3986 ليتم تطبيقه على المكونات التي تم إنشاؤها. اقرأ الوثائق القياسية التي تشرح كل قرار تشفير في مكتبات URL. WHATWG URL يعتمد على RFC 3986 بدلاً من استبداله بالكامل. إنشاء عناوين URL للمتصفحات العامة؟ اتبع RFC 3986؛ تطبق المتصفحات قواعد WHATWG في الأعلى. الأنظمة الأقدم؟ اختبار التنفيذ الفعلي. التطبيع للتخزين؟ قم بتطبيق RFC 3986 باستمرار. إن فهم التمييز المحجوز /unreserved يخبرك بالأحرف الآمنة.
ترميز URL ليس بمثابة تعقيم أمني. كل سياق — SQL، HTML، JavaScript، URI — يحتاج إلى تشفير الإخراج الخاص به. يحمي التشفير المئوي بنية URL فقط. تطبيق الدفاع الصحيح في الطبقة اليمنى.
ما لا يغطيه هذا — WHATWG URL مجموعات التشفير المختلفة للمعيار والتعامل مع IRI
RFC 2396 (1998) توضح مجموعات الأحرف بشكل أكثر صرامة من RFC 1738. لقد قام بإضفاء الطابع الرسمي على الأحرف المحجوزة التي تخدم بنية URI وغير محفوظة كبيانات حرفية. تم توسيعها بدون تحفظ بما في ذلك الواصلة والنقطة والشرطة السفلية والتلدة فوق التعريفات الأصلية. RFC 2396 قدم تمييزًا بين المحددات العامة (:، /, ?، #، [، ]، @) والحدود الفرعية (!، $، &، '، (، ) ، *، +، ,، ;، =). لكل مجموعة أدوار هيكلية مختلفة في عناوين URL. توضح التسمية تقسيم الأحرف المحجوزة إلى مجموعتين. معرفة الأسماء يساعد في المناقشات الفنية.
RFC 3986 (2005) هو مرجع حديث. لقد احتفظ بالتمييز المحفوظ /unreserved ولكن تم تبسيطه. لا تقوم هيئات المعايير بكسر الويب بأثر رجعي. تشفير عمدا معرفة المعيار الخاص بك. يوفر برنامج التشفير ووحدة فك التشفير URL مرجعًا RFC 3986.
الوجبات الجاهزة: المعيار قصير ودقيق - كيف يتوافق وضعا التشفير ووحدة فك التشفير URL مع تشفير البيانات مقابل الحفاظ على المحددات
يعتمد اختيار المعايير على السياق. إنشاء عناوين URL للمتصفحات العامة؟ اتبع RFC 3986؛ تطبق المتصفحات قواعد WHATWG. الأنظمة الأقدم؟ اختبار التنفيذ الفعلي. التطبيع للتخزين؟ قم بتطبيق RFC 3986 باستمرار. تطورت قواعد التشفير المئوية من RFC 1738 إلى RFC الموضحة 2396 و RFC 3986 إلى الطبقات WHATWG URL القياسية. يعكس كل جيل تجربته. يتبع المنشئون المعاصرون RFC 3986 أو WHATWG سياقيًا. تتعايش عناوين URL القديمة والجديدة معًا مما يتطلب تفكيرًا متوافقًا. فهم الفئات يمنع أخطاء الترميز.
تحقق من تشفير عناوين URL بشكل صحيح قبل النشر. يوضح برنامج التشفير ووحدة فك التشفير URL القواعد RFC 3986 من البداية إلى النهاية. اطلع على القيم السداسية الدقيقة وافهم الأحرف التي يتم تشفيرها. استخدم هذه الأداة عند إنشاء عناوين URL عن طريق وصل الأجزاء. RFC 3986 الفئات المحجوزة وغير المحجوزة تقسم مجموعات الأحرف لتحليل URI المتسق.