Dimungkinkan untuk menyetel HTTP_PROXY
dalam skrip CGI dengan meneruskan header Proxy
. Jika skrip menggunakan permintaan untuk mengunduh file, permintaan akan dengan senang hati menggunakan proxy yang disediakan penyerang untuk membuat permintaan.
Ini harus dikurangi seperti di Perl (sejak 2001), Ruby, dan perpustakaan seperti curl.
Saya mengkonfirmasi bahwa HTTP_PROXY
(dalam huruf besar) diterima serta http_proxy
konvensional, huruf kecil (permintaan 2.7.0)
Kami sudah membahas ini panjang lebar di IRC. Kami memiliki serangkaian pendapat yang kompleks di sini, tetapi ini dia:
Session.trust_env
. Menyetelnya ke False
sepenuhnya dan sepenuhnya mengurangi risiko ini.Saya bersedia mempertimbangkan kemungkinan memunculkan peringatan saat menjalankan Permintaan di dalam proses CGI dengan trust_env=True
, dan saya bahkan bersedia mempertimbangkan kemungkinan memaksa trust_env
ke False
dalam situasi seperti itu, tetapi secara realistis untuk kode Python solusi yang tepat untuk ini adalah _tidak menjalankan aplikasi Anda di dalam CGI_.
Masuk akal bagi saya. Menghindari HTTP_PROXY (huruf besar) dalam konteks CGI mungkin akan menjadi langkah yang baik, tetapi jika permintaan tidak melakukan itu secara langsung mungkin tidak ada gunanya Anda mengambil tindakan aktif. Saya sendiri hanya pernah menggunakan wsgi. Aku akan pergi ke depan dan menutup ini.
@remram44 Untuk apa nilainya, saya akan _sungguh-sungguh_ mendukung tambalan ke metode urllib.request
modul getproxies
#$ modul stdlib untuk menerapkan pemeriksaan semacam ini. Itu sepertinya tempat yang jauh lebih produktif untuk meletakkan tambalan. =) Jika Anda ingin membuka laporan bug untuk itu, saya akan dengan senang hati menimpali: Saya bahkan dapat secara sukarela menulis patch sendiri!
Saya mengajukan cpython-27568 .
Komentar yang paling membantu
Kami sudah membahas ini panjang lebar di IRC. Kami memiliki serangkaian pendapat yang kompleks di sini, tetapi ini dia:
Session.trust_env
. Menyetelnya keFalse
sepenuhnya dan sepenuhnya mengurangi risiko ini.Saya bersedia mempertimbangkan kemungkinan memunculkan peringatan saat menjalankan Permintaan di dalam proses CGI dengan
trust_env=True
, dan saya bahkan bersedia mempertimbangkan kemungkinan memaksatrust_env
keFalse
dalam situasi seperti itu, tetapi secara realistis untuk kode Python solusi yang tepat untuk ini adalah _tidak menjalankan aplikasi Anda di dalam CGI_.