IIS CGI HTTP_PROXY header permintaan mungkin Dialihkan

PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.

Klik disini untuk melihat versi Inggris dari artikel ini: 3179800
Gejala
Ketika Anda menggunakan fitur IIS Common Gateway Interface (CGI) ke host program yang dapat dijalankan yang menggunakan perpustakaan tertentu untuk mengarahkan permintaan, permintaan mungkin akan salah arah berdasarkan pada keberadaan header permintaan "PROXY". Beberapa platform aplikasi web yang dikenal menggunakan perpustakaan ini. Ini termasuk PHP, Python dan Go, antara lain.
Penyebab
CGI adalah antarmuka yang memungkinkan server web untuk aplikasi host yang dijalankan sebagai proses yang dapat dijalankan. Ketika permintaan diterima oleh server Web, server mulai proses baru untuk menangani permintaan tunggal. Ketika permintaan selesai, proses akan keluar. Agar proses untuk mendapatkan akses ke data permintaan, header permintaan disertakan sebagai variabel lingkungan yang memiliki "HTTP_" prepended ke nama. Oleh karena itu, proses CGI untuk permintaan yang berisi judul yang bernama "Proxy" memiliki variabel lingkungan "HTTP_PROXY" yang memiliki nilai yang sama sebagai header permintaan.

baris perintah cURL dan libraryare digunakan untuk enablevarious jenis aplikasi untuk membuat permintaan untuk berbagai jenis server, termasuk server web. Perpustakaan ini dapat dikonfigurasi dengan menggunakan parameter baris perintah, atau dapat membaca parameter konfigurasi dari variabel lingkungan host proses. "HTTP_PROXY" adalah salah satu dari banyak parameter konfigurasi yang digunakan oleh cURL. "HTTP_PROXY" digunakan oleh cURL untuk mengirim permintaan HTTP melalui proksi dikonfigurasi.

Catatan Hal ini tidak terkait dengan "HTTP_PROXY" sebagai representasi header permintaan klien.

Ketika cURL berada dalam proses CGI, dan proses berisi variabel lingkungan yang bernama "HTTP_PROXY", cURL menggunakan nilai data sendrequested melalui HTTP proxy nilai yang ditetapkan di variabel lingkungan. Ini terjadi karena cURL mengharapkan "HTTP_PROXY" adalah petunjuk konfigurasi dan tidak header permintaan klien.
Teknik pemecahan masalah
Untuk mengatasi masalah ini, jangan gunakan CGI di server yang menjalankan IIS. CGI adalah antarmuka sebagian besar lama yang digantikan dengan antarmuka yang lebih baru dan lebih terkait kinerja. Khususnya, PHP, Python dan Go harus host melalui FastCGI pada IIS. FastCGI tidak menggunakan variabel lingkungan untuk header permintaan klien dan tidak memiliki masalah ini. Namun untuk PHP, beberapa aplikasi mungkin menggunakan fungsi getenv() PHPs untuk mengambil variabel lingkungan. Bahkan ketika PHP tidak berada di dalam proses CGI, itu meniru perilaku CGI dengan memasukkan nilai-nilai header permintaan ke set data yang tersedia untuk fungsi getenv() . Jika Anda menggunakan aplikasi PHP yang mengambil HTTP_PROXY dengan cara ini, mitigations berikut menghapus nilai header atau menolak permintaan dengan PROXY header efektif.

Jika Anda harus menggunakan CGI untuk beberapa alasan, memblokir permintaan yang berisi header permintaan yang bernama "Proxy" atau menghapus nilai header. Hal ini karena "Proxy" bukan nama header permintaan standar dan browser umumnya tidak akan mengirimkan informasi.

Untuk memblokir permintaan yang berisi header Proxy (solusi yang dipilih), jalankan baris perintah berikut ini:
appcmd menetapkan konfigurasi /section:requestfiltering / + requestlimits.headerLimits. [header = proxy, sizelimit = '0']

Catatan Appcmd.exe tidak biasanya di garis jatuh berseri dan dapat ditemukan di direktori %systemroot%\system32\inetsrv

Untuk menghapus nilai header, Anda dapat menggunakan aturan penulisan ulang URL berikut ini:
<system.webServer>    <rewrite>        <rules>            <rule name="Erase HTTP_PROXY" patternSyntax="Wildcard">                <match url="*.*" />                <serverVariables>                    <set name="HTTP_PROXY" value="" />                </serverVariables>                <action type="None" />            </rule>        </rules>    </rewrite></system.webServer>

Catatan Penulisan ulang URL yang dapat diunduh tambah pasang untuk IIS dan tidak disertakan di penginstalan asali IIS.

Properti

ID Artikel: 3179800 - Tinjauan Terakhir: 07/21/2016 09:38:00 - Revisi: 2.0

Windows 10, Windows 10 Version 1511, Windows Server 2012 R2 Datacenter, Windows Server 2012 R2 Standard, Windows Server 2012 R2 Essentials, Windows Server 2012 R2 Foundation, Windows 8.1 Enterprise, Windows 8.1 Pro, Windows 8.1, Windows RT 8.1, Windows Server 2012 Datacenter, Windows Server 2012 Standard, Windows Server 2012 Essentials, Windows Server 2012 Foundation, Windows Server 2008 R2 Service Pack 1, Windows 7 Service Pack 1, Windows Server 2008 Service Pack 2, Windows Vista Service Pack 2

  • atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability kbmt KB3179800 KbMtid
Tanggapan