Il est possible de définir le HTTP_PROXY
dans les scripts CGI en passant l'en-tête Proxy
. Si le script utilise des requêtes pour télécharger des fichiers, les requêtes utiliseront volontiers le proxy fourni par l'attaquant pour effectuer des requêtes.
Cela devrait être atténué comme c'est le cas dans Perl (depuis 2001), Ruby et des bibliothèques comme curl.
J'ai confirmé que HTTP_PROXY
(en majuscule) est accepté ainsi que le http_proxy
conventionnel en minuscules (demandes 2.7.0)
Nous en avons longuement discuté sur IRC. Nous avons ici un ensemble complexe d'opinions, mais les voici :
Session.trust_env
. Le fixer à False
entièrement et complètement atténue ce risque.Je suis prêt à envisager la possibilité de déclencher des avertissements lors de l'exécution de Requests dans un processus CGI avec trust_env=True
, et je suis même prêt à envisager la possibilité de forcer trust_env
à False
dans une telle situation, mais de manière réaliste pour le code Python, la bonne solution consiste simplement à _ne pas exécuter vos applications dans CGI_.
Cela a du sens pour moi. Éviter HTTP_PROXY (majuscule) dans un contexte CGI serait probablement une bonne chose, mais si les requêtes ne le font pas directement, il n'y a probablement aucun sens à ce que vous preniez des mesures actives. Moi-même, je n'utilise que wsgi. Je vais continuer et fermer ça.
@ remram44 Pour ce que ça vaut, je soutiendrais _heartily_ un correctif à la méthode urllib.request
du module getproxies
#$0$#$ du module stdlib pour implémenter ce type de vérification. Cela semble être un endroit beaucoup plus productif pour mettre le patch. =) Si vous souhaitez ouvrir un rapport de bogue pour cela, je serai heureux d'intervenir : je peux même me porter volontaire pour écrire le correctif moi-même !
J'ai déposé python-27568 .
Commentaire le plus utile
Nous en avons longuement discuté sur IRC. Nous avons ici un ensemble complexe d'opinions, mais les voici :
Session.trust_env
. Le fixer àFalse
entièrement et complètement atténue ce risque.Je suis prêt à envisager la possibilité de déclencher des avertissements lors de l'exécution de Requests dans un processus CGI avec
trust_env=True
, et je suis même prêt à envisager la possibilité de forcertrust_env
àFalse
dans une telle situation, mais de manière réaliste pour le code Python, la bonne solution consiste simplement à _ne pas exécuter vos applications dans CGI_.