Requests: هجرة HTTPoxy

تم إنشاؤها على ١٨ يوليو ٢٠١٦  ·  4تعليقات  ·  مصدر: psf/requests

https://httpoxy.org/

من الممكن تعيين HTTP_PROXY في نصوص CGI من خلال تمرير رأس Proxy . إذا كان البرنامج النصي يستخدم طلبات لتنزيل الملفات ، فسوف تسعد الطلبات باستخدام الوكيل الذي يوفره المهاجم لتقديم الطلبات.

يجب التخفيف من هذا كما هو الحال في Perl (منذ 2001) ، و Ruby ، ​​والمكتبات مثل curl.

لقد أكدت أن HTTP_PROXY (بأحرف كبيرة) مقبول بالإضافة إلى الأحرف الصغيرة التقليدية http_proxy (تطلب 2.7.0)

التعليق الأكثر فائدة

لقد كنا نناقش هذا باستفاضة في IRC. لدينا مجموعة معقدة من الآراء هنا ، ولكن ها هي:

  1. بشكل عام ، إذا كنت تقوم بتشغيل البرنامج النصي للطلبات في مكان يسمح فيه التطبيق الخاص بك بالكتابة إلى البيئة ، فيجب عليك تعطيل بحث الطلبات في البيئة. لدينا علم لهذا: Session.trust_env . إن ضبطه على False كليًا ويخفف تمامًا من هذه المخاطر.
  2. CGI هو وضع غير مألوف _extremely_ لتشغيل كود Python. إنه غير فعال بشكل مذهل ، وبقدر ما أعرف بشكل أساسي ، لم يتم تطوير تطبيقات Python باستخدامه.
  3. يتم إجراء بحثنا عن الوكلاء في الواقع بواسطة مكتبة Python القياسية. هذا يعني أن الإصلاح الأكثر كفاءة موجود في مكتبة Python القياسية نفسها ، والتي يمكنها تخفيف المشكلة ليس فقط للطلبات ولكن لجميع العملاء الآخرين في مكتبة Python القياسية.

أنا على استعداد للنظر في إمكانية رفع التحذيرات عند تشغيل الطلبات داخل عملية CGI trust_env=True ، وأنا على استعداد أيضًا للنظر في إمكانية فرض trust_env على False في مثل هذه الحالة ، ولكن من الناحية الواقعية بالنسبة إلى كود Python ، فإن الحل الصحيح لذلك هو ببساطة عدم تشغيل تطبيقاتك داخل CGI_.

ال 4 كومينتر

لقد كنا نناقش هذا باستفاضة في IRC. لدينا مجموعة معقدة من الآراء هنا ، ولكن ها هي:

  1. بشكل عام ، إذا كنت تقوم بتشغيل البرنامج النصي للطلبات في مكان يسمح فيه التطبيق الخاص بك بالكتابة إلى البيئة ، فيجب عليك تعطيل بحث الطلبات في البيئة. لدينا علم لهذا: Session.trust_env . إن ضبطه على False كليًا ويخفف تمامًا من هذه المخاطر.
  2. CGI هو وضع غير مألوف _extremely_ لتشغيل كود Python. إنه غير فعال بشكل مذهل ، وبقدر ما أعرف بشكل أساسي ، لم يتم تطوير تطبيقات Python باستخدامه.
  3. يتم إجراء بحثنا عن الوكلاء في الواقع بواسطة مكتبة Python القياسية. هذا يعني أن الإصلاح الأكثر كفاءة موجود في مكتبة Python القياسية نفسها ، والتي يمكنها تخفيف المشكلة ليس فقط للطلبات ولكن لجميع العملاء الآخرين في مكتبة Python القياسية.

أنا على استعداد للنظر في إمكانية رفع التحذيرات عند تشغيل الطلبات داخل عملية CGI trust_env=True ، وأنا على استعداد أيضًا للنظر في إمكانية فرض trust_env على False في مثل هذه الحالة ، ولكن من الناحية الواقعية بالنسبة إلى كود Python ، فإن الحل الصحيح لذلك هو ببساطة عدم تشغيل تطبيقاتك داخل CGI_.

له معنى بالنسبة لي. من المحتمل أن يكون تجنب HTTP_PROXY (الأحرف الكبيرة) في سياق CGI خطوة جيدة ، ولكن إذا كانت الطلبات لا تفعل ذلك بشكل مباشر ، فربما لا يكون هناك أي معنى لاتخاذ إجراءات فعالة. أنا نفسي فقط استخدم WSGI. سأذهب وأغلق هذا.

@ remram44 على ما يستحق ، أود _heartily_ دعم تصحيح لطريقة urllib.request module's getproxies لتنفيذ هذا النوع من الفحص. يبدو أن هذا مكان أكثر إنتاجية بكثير لوضع التصحيح. =) إذا كنت تريد فتح تقرير خطأ لذلك ، فسأكون سعيدًا بالرد: حتى أنني قد أتطوع لكتابة التصحيح بنفسي!

لقد قدمت cpython-27568 .

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

brainwane picture brainwane  ·  3تعليقات

Matt3o12 picture Matt3o12  ·  3تعليقات

jakul picture jakul  ·  3تعليقات

NoahCardoza picture NoahCardoza  ·  4تعليقات

eromoe picture eromoe  ·  3تعليقات