OWASP TOP10 - #10 عمليات إعادة التوجيه وإعادة التوجيه غير المؤكدة

StackOverflow https://stackoverflow.com//questions/9651372

سؤال

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

أعرف لماذا لا ينبغي لي إعادة توجيه ...هذا منطقي تمامًا بالنسبة لي.

لكن ما لا أفهمه حقًا:أين هو بالضبط الفرق بين إعادة التوجيه ووضع هذا في الوضع الطبيعي <a href وصلة؟
ربما يبحث بعض المستخدمين في شريط الحالة، ولكن أعتقد أن معظمهم لا ينظرون حقًا إلى شريط الحالة، عندما ينقرون على الرابط.
هل هذا حقا هو السبب الوحيد؟مثل على هذا شرط كتبوا:

<a href="http://bank.example.com/redirect?url=http://attacker.example.net">Click here to log in</a>

قد يفترض المستخدم أن الرابط آمن نظرًا لأن عنوان URL يبدأ بالبنك الموثوق به،bank.example.com.ومع ذلك، ستتم إعادة توجيه المستخدم بعد ذلك إلى موقع الويب الخاص بالمهاجم (attacker.example.net) والذي ربما جعله المهاجم يبدو مشابهًا جدًا لموقعbank.example.com.يمكن للمستخدم بعد ذلك إدخال بيانات الاعتماد عن غير قصد في صفحة الويب الخاصة بالمهاجم وتهديد حسابه المصرفي.يجب ألا يقوم Java servlet أبدًا بإعادة توجيه المستخدم إلى عنوان URL دون التحقق من أن عنوان إعادة التوجيه هو موقع موثوق به.

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

هل أرى هذه المشكلة بشكل صحيح؟

هل كانت مفيدة؟

المحلول

من وجهة نظري، ليس إعادة التوجيه هي المشكلة.المشكلة الرئيسية هنا هي السماح بإعادة التوجيه (حيث يمكن للمستخدم التحكم في الهدف) الذي يحتوي على عنوان URL مطلق.

حقيقة أن عنوان url مطلق (بمعنى أنه يبدأ http://host/etc)، يعني أنك تسمح دون قصد بعمليات إعادة التوجيه عبر النطاقات.وهذا يشبه إلى حد كبير ثغرات XSS الكلاسيكية حيث يمكن أن تنعكس جافا سكريبت لإجراء مكالمات عبر النطاق (وتسريب معلومات المجال الخاص بك).

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

هل هذا يجيب على سؤالك أم مجرد إنشاء المزيد؟

نصائح أخرى

المشكلة الرئيسية هي أنه من الممكن للمهاجم أن يجعل عنوان URL يبدو جديرًا بالثقة لأنه في الواقع عنوان URL لموقع ويب تثق به الضحية، أي.ه. Bank.example.com.

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

لذلك، حتى إذا كان الضحية على وعي أمني كبير لدرجة أنه يتحقق من عنوان URL قبل النقر فوق رابط أو طلب مورده بخلاف ذلك، فكل ما يمكنهم التحقق منه هو أن عنوان URL يشير إلى موقع الويب الجدير بالثقة Bank.example.com.وهذا وحده يكفي في كثير من الأحيان.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top