Nginx ialah pelayan web berprestasi tinggi dan pelayan proksi terbalik Disebabkan prestasinya yang cemerlang dan fungsi yang berkuasa, ia telah semakin digunakan dan telah menjadi peneraju dalam bidang pelayan aplikasi web semasa. Dalam proses menggunakan Nginx untuk pembangunan dan penggunaan aplikasi web, isu yang sangat penting ialah bagaimana untuk memastikan keselamatan protokol HTTP. Artikel ini akan memperkenalkan cara menyediakan keselamatan protokol HTTP Nginx dari aspek berikut.
1. Dayakan protokol HTTPS
Protokol HTTP itu sendiri tidak selamat kerana protokol HTTP dihantar dalam teks yang jelas, jadi ia mudah dicuri oleh penggodam. Untuk memastikan keselamatan protokol HTTP, kami boleh menaik taraf protokol HTTP kepada protokol HTTPS. Protokol HTTPS menggunakan protokol SSL/TLS untuk menyulitkan protokol HTTP untuk memastikan keselamatan data semasa penghantaran rangkaian. Untuk mendayakan protokol HTTPS, kami perlu melakukan langkah-langkah berikut:
1 Beli atau jana sendiri sijil SSL
2 Dayakan sokongan HTTPS dalam fail konfigurasi Nginx
3 .Konfigurasikan port mendengar HTTPS
2. Hadkan kaedah permintaan HTTP
Kaedah permintaan HTTP termasuk GET, POST, PUT, DELETE, dsb. Kaedah GET digunakan untuk mendapatkan sumber daripada pelayan, dan kaedah POST digunakan untuk menghantar data ke pelayan. Walaupun kaedah ini sangat biasa dalam aplikasi web, kaedah ini juga boleh dieksploitasi oleh penggodam. Sebagai contoh, penggodam boleh mencuri maklumat log masuk pengguna melalui kaedah POST, dan kemudian mendapatkan nombor akaun dan kata laluan pengguna. Untuk mengelakkan situasi ini, kami boleh mengehadkan kaedah permintaan HTTP dan hanya membenarkan pengguna membuat permintaan menggunakan kaedah yang diperlukan. Dalam Nginx, kita boleh menggunakan arahan berikut untuk mengehadkan kaedah permintaan HTTP:
limit_except GET {
deny all;
}
Arahan di atas menunjukkan bahawa hanya kaedah GET dibenarkan untuk membuat permintaan kaedah permintaan HTTP lain akan ditolak.
3. Tetapkan sekatan pengepala permintaan HTTP
Pengepala permintaan HTTP termasuk banyak maklumat berguna, seperti Ejen Pengguna, Kuki, dll. Walau bagaimanapun, pengepala permintaan ini juga boleh digunakan untuk serangan. Contohnya, dalam serangan suntikan SQL, penggodam boleh melakukan serangan dengan mengubah suai nilai Kuki dalam pengepala permintaan HTTP. Untuk memastikan keselamatan protokol HTTP, kami boleh menetapkan sekatan pengepala permintaan HTTP. Dalam Nginx, anda boleh menggunakan arahan berikut untuk menetapkan had pengepala permintaan HTTP:
if ($http_user_agent ~* ^curl) {
return 403;
}
Arahan di atas bermaksud jika Jika maklumat Ejen Pengguna dalam pengepala permintaan HTTP mengandungi rentetan curl, permintaan itu akan ditolak.
4. Tapis permintaan HTTP khusus
Dalam aplikasi web, terdapat beberapa permintaan HTTP yang mudah dieksploitasi oleh penggodam untuk serangan. Contohnya, untuk menyerang kelemahan kebocoran fail /etc/passwd, penggodam boleh menambah simbol traversal direktori seperti ../ pada permintaan HTTP untuk mendapatkan maklumat sensitif pada pelayan. Untuk mengelakkan serangan ini, kami perlu menapis permintaan HTTP untuk melarangnya daripada mengandungi aksara atau jujukan aksara berbahaya. Dalam Nginx, anda boleh menggunakan arahan berikut untuk menapis permintaan HTTP tertentu:
if ($request_uri ~* "/etc/passwd") {
return 403;
}
di atas Arahan menunjukkan bahawa jika permintaan HTTP mengandungi urutan aksara /etc/passwd, permintaan akan ditolak.
Ringkasan
Artikel ini memperkenalkan cara menyediakan keselamatan protokol HTTP Nginx Dalam proses menggunakan Nginx untuk pembangunan dan penggunaan aplikasi web, kita perlu memberi perhatian untuk memastikan keselamatan protokol HTTP. Dengan mendayakan protokol HTTPS, menyekat kaedah permintaan HTTP, menetapkan sekatan pengepala permintaan HTTP dan menapis permintaan HTTP tertentu, kami boleh meningkatkan keselamatan aplikasi web dengan berkesan.
Atas ialah kandungan terperinci Tetapan keselamatan protokol HTTP Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!