العربية

أدوات المطور · URL التشفير وفك التشفير

URL لا يعد التشفير بمثابة تطهير: لا تزال المعلمات التي تم فك تشفيرها بحاجة إلى الهروب

· لماذا يهم

ترميز URL حماية com.xss

تم فك تشفير الحمولة المشفرة بنسبة مئوية مرة أخرى إلى النموذج الأصلي وجاهزة للهروب من الإخراج
الرسم التوضيحي المتجه الأصلي ToolAcre

يحمي التشفير المئوي بنية URL، وليس HTML أو SQL أو Shell. يشرح هذا المنشور لماذا تصبح القيمة المشفرة بشكل صحيح خطيرة مرة أخرى في اللحظة التي يتم فيها فك تشفيرها، وأي هروب ينتمي إليه.

لماذا لا يستطيع ترميز URL وحده إيقاف هجمات XSS

يمكن للمعلمة "الآمنة" تشغيل البرنامج النصي إذا تم تشفيره للإرسال ولكن تم فك تشفيره قبل العرض. خذ بعين الاعتبار حمولة XSS مثل علامة img مع نسبة ترميز النسبة المئوية لمعالج onerror كـ %3Cimg%20src%3Dx%20onerror%3Dalert%281%29%3E. إذا انتقل هذا في URL وتم فك تشفيره بواسطة رمز التطبيق قبل إدراجه في HTML، فسيرى المتصفح العلامات الأصلية وينفذ المعالج. ترميز النسبة المئوية هو طبقة التمثيل؛ لا يغير التهديد الأساسي.

تكون الحمولة آمنة فقط أثناء الإرسال، عندما تكون سلسلة مشفرة بدون معنى خاص للمحلل اللغوي HTTP أو URL. في اللحظة التي يتم فيها فك التشفير، يصبح خطيرًا مرة أخرى لأنه يعود إلى شكله الأصلي. يجب أن يطبق كل سياق فرعي قواعد الهروب الخاصة به المناسبة لكيفية استخدام البيانات. لا يعد ترميز URL بديلاً عن HTML للهروب أو SQL للمعلمات أو معالجة وسيطة الصدفة.

الغرض من التشفير المئوي هو الحفاظ على المحددات بشكل لا لبس فيه على السلك، لا أكثر

ما يفعله الترميز المئوي هو حماية بنية URL بدقة. تظل علامة الضم جزءًا من بناء جملة سلسلة الاستعلام، ولا يتم إعادة تفسيرها كمحدد. لا تصبح الشرطة المائلة فاصل المسار. علامة الاستفهام لا تبدأ الجزء. من خلال تشفير الأحرف المحجوزة كـ %XX، يعاملها المحلل اللغوي كبيانات، وليس بناء جملة. يعمل هذا لمهمة واحدة: الحفاظ على بنية URL واضحة على السلك.

فك التشفير يعكس هذا الشارع ذو الاتجاه الواحد تمامًا. البايتات المستعادة هي بالضبط ما تم ترميزه، لا أكثر ولا أقل. HTML- تظل السلسلة الخطيرة خطيرة، SQL- يظل ناقل الحقن خطيرًا، ويظل أمر shell خطيرًا. الترميز المئوي ليس التحقق من صحة الإدخال، وليس التعقيم وليس الحدود الأمنية. إنه تنسيق تمثيلي فقط.

يؤدي فك التشفير إلى استعادة البايتات الأصلية، بحيث يرى كل سياق انتقالي القيمة الأولية مرة أخرى

الهروب الخاص بالسياق هو المكان الذي تعيش فيه الحماية الحقيقية بصدق. HTML يحتاج السياق إلى كيانات: أقل من يصبح <، أكبر من يصبح >، تصبح علامات الاقتباس "، علامة العطف تصبح &amp;. يحتاج سياق SQL إلى استعلامات ذات معلمات تفصل البنية عن البيانات، مما يمنع المهاجم من الاختراق. يحتاج سياق Shell إلى صفائف وسيطة لتجنب تقسيم الكلمات والالتفاف بشكل كامل.

يحتوي كل سياق على شخصيات خطيرة مختلفة وقواعد هروب مختلفة بدقة. كيان HTML غير ضار في استعلام SQL ولكنه غير مفيد للحماية هناك. تمنع الشرطة المائلة العكسية إدخال SQL في بعض قواعد البيانات دون غيرها. يعتمد الهروب من الصدفة على أسلوب الاقتباس. يجب أن يفهم المطور الوجهة قبل اختيار كيفية التعامل مع البيانات.

الهروب الخاص بالسياق - HTML كيانات للترميز، واستعلامات ذات معلمات لـ SQL، ومصفوفات الوسيطات للأصداف

مثال عملي: يكشف اتباع الحمولة من الرابط إلى السجل إلى الصفحة عن المكان الذي يجب أن يحدث فيه التشفير والهروب. يحتوي الرابط على حمولة مشفرة XSS كمعلمة استعلام. يستقبل الخادم الرسالة وهي لا تزال مشفرة في نص الطلب HTTP. يقوم التطبيق بفك ترميز معلمة الاستعلام لعرضها في الصفحة. بدون هروب المخرجات، يعرض المتصفح الحمولة كـ HTML وينفذها.

إذا تم تسجيل نفس المعلمة في الملف، فإن إدخال السجل يحتوي على الحمولة النافعة التي تم فك تشفيرها بوضوح. يقرأ التطبيق الثاني السجل، ويفك تشفيره مرة أخرى، ويدرجه في صفحة HTML دون الهروب. يتم تنفيذ الحمولة للمرة الثانية. وفي كل خطوة، كان السياق هو الذي يحدد ما هو آمن. URL كان فك التشفير آمنًا. كان تخزين الملفات آمنًا. لكن إخراج HTML دون الهروب كان قاتلاً.

مثال عملي: متابعة حمولة واحدة من الرابط إلى السجل إلى الصفحة - حيث يتم تشفيرها، وحيث يتم فك تشفيرها، وحيث يجب الهروب منها

يُظهر التشفير كأداة للتهرب من التصفية سبب قيام المهاجمين بالتشفير المزدوج وخلط الأحرف السداسية بشكل كبير. إذا كان جدار الحماية يبحث عن علامة img، يرسل المهاجم %3Cimg ويأمل في فك تشفير التطبيق مرة واحدة ولكن جدار الحماية لا يفعل ذلك. إذا رفض التحقق %3Cimg لكنه سمح بحالة مختلفة، فسيتم فك تشفير البايتات نفسها لنفس الحمولة. يعد الأمان اعتمادًا على نمط الإدخال المشفر المطابق هشًا.

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

التشفير كأداة للتهرب من التصفية - لماذا يقوم المهاجمون بالتشفير المزدوج وخلط الأحرف السداسية، ولماذا يجب أن يكون فك التشفير دقيقًا

يتطلب الدفاع الكامل عن XSS فهم تدفقات البيانات بشكل كامل، والسياقات التي تمر عبرها في كل خطوة، وما يحتاجه الهروب من كل سياق. تشفير URL عبارة عن قطعة صغيرة واحدة: يحافظ على البنية أثناء الإرسال فقط. لكن قطعة واحدة لا تعتبر دفاعًا بحد ذاتها على الإطلاق. يخلط العديد من المطورين بين التشفير والتطهير لأن كلاهما يتضمن استبدال الأحرف، لكنهما يخدمان وظائف مهمة مختلفة تمامًا.

يمكن لجدار حماية تطبيقات الويب اكتشاف الأنماط في حمولات الطلب، ولكن التشفير يتجنب بسهولة تقنيات مطابقة الأنماط البسيطة. يعد ضبط WAF أمرًا معقدًا ويتجاوز تشفير URL. الدفاع الموثوق به هو الهروب من المخرجات في كود التطبيق، مقترنًا بالتحقق من صحة الإدخال حيث يكون ذلك منطقيًا لسياقك ومتطلباتك المحددة.

ما لا يغطيه هذا — دليل دفاع XSS الكامل أو ضبط جدار الحماية لتطبيق الويب

يتطلب الدفاع الكامل عن XSS فهم تدفقات البيانات بشكل كامل، والسياقات التي تمر عبرها في كل خطوة، وما يحتاجه الهروب من كل سياق في جميع أنحاء التطبيق. تشفير URL عبارة عن قطعة صغيرة واحدة: يحافظ على البنية أثناء الإرسال فقط. لكن قطعة واحدة لا تعتبر دفاعًا بحد ذاتها على الإطلاق. يخلط العديد من المطورين بين التشفير والتطهير لأن كلاهما يتضمن استبدال الأحرف، لكنهما يخدمان وظائف مهمة مختلفة تمامًا طوال عملية التطوير.

اختبر الحمولة النافعة من البداية إلى النهاية لمعرفة مدى أهمية التشفير والهروب بشكل حقيقي طوال العملية بأكملها. قم بلصق %3Cimg%20src%3Dx%20onerror%3Dalert%281%29%3E في وحدة فك الترميز URL وشاهدها تصبح سلسلة تبدو مثل العلامات. ثم الصق النتيجة في HTML كيان الهروب لترى كيف يصبح نصًا آمنًا. تظهر أداتان الطبقات بشكل واضح.

الوجبات الجاهزة: تشفير URL، الهروب للإخراج - كيف يجلس جهاز التشفير ووحدة فك التشفير URL وأداة الهروب من الكيان HTML جنبًا إلى جنب في منتج واحد للوظيفتين المختلفتين

الوجبات الجاهزة هي أن التشفير والهروب هما اهتمامان منفصلان في طبقات مختلفة تمامًا طوال الوقت. تشفير URL يحمي البنية المرسلة فقط. يؤدي الهروب من الإخراج إلى حماية المحتوى المعروض. لا تزال القيمة المشفرة بشكل صحيح بحاجة إلى هروب الإخراج عندما تصل إلى HTML. لا تحتاج السلسلة التي تم تجاوزها بشكل صحيح إلى تشفير URL إذا لم يتم وضعها في URL.

قم بتطبيق الدفاع الصحيح على الطبقة المناسبة بصدق. لا تعتمد على ترميز URL لإيقاف هجمات XSS. لا تعتمد على هروب HTML للحفاظ على بنية URL. فهم تدفق البيانات الخاصة بك وتطبيق التحويل المناسب في كل خطوة. يساعدك برنامج التشفير URL على معرفة ما يفعله التشفير؛ ثم استخدم HTML أداة الهروب من الكيان لخطوة الإخراج.