Panduan penulisan dasar keselamatan URL Nginx
Nginx, sebagai pelayan web berprestasi tinggi dan pelayan proksi terbalik, digemari secara meluas oleh arkitek tapak web. Tetapi apabila menggunakan Nginx, kita juga perlu memberi perhatian kepada isu keselamatan, terutamanya semasa memproses URL.
Disebabkan fleksibiliti Nginx, jika kami tidak menggunakan beberapa strategi keselamatan URL, kami mungkin tertakluk kepada serangan berikut:
- Suntikan SQL
- XSS attack
- Muat turun fail haram
- Serangan CSRF
- Permintaan tidak sah untuk akses, dsb.
Artikel ini akan memperkenalkan panduan untuk menulis URL Nginx dasar keselamatan.
1. Prasyarat
Sebelum menulis dasar keselamatan URL Nginx, anda perlu menguasai mata pengetahuan berikut:
- Ungkapan biasa
- Konfigurasi Nginx sintaks fail
- Pengetahuan asas protokol HTTP
2. Penapisan input
Nginx boleh menggunakan pengesanan pengepala permintaan http untuk menghalang permintaan HTTP yang berniat jahat. Kaedah pelaksanaan khusus adalah untuk menambah konfigurasi yang serupa dengan yang berikut pada fail konfigurasi Nginx:
if ($http_user_agent ~* "some evil expression") { return 403; }
atau gunakan modul tembok api terbina dalam Nginx untuk penapisan input, seperti berikut:
# block ip sends more than 100 requests per 5 seconds limit_conn_zone $binary_remote_addr zone=one:10m; limit_req_zone $binary_remote_addr zone=two:10m rate=1r/s; server { location / { limit_conn one 10; limit_req zone=two burst=5 nodelay; } }
Contoh ini melakukan perkara berikut:
- Pertama mentakrifkan dua zon, iaitu kawasan memori yang boleh menyimpan maklumat status. (Ini juga bermakna jika terdapat banyak akses, kos perlindungan ini mungkin lebih tinggi)
- Sekat jika alamat IP yang sama menghantar lebih daripada 100 permintaan HTTP dalam masa 5 saat.
- Sekat jika alamat IP yang sama menghantar lebih daripada 5 permintaan HTTP dalam masa 1 saat.
3. Cegah suntikan SQL
Dalam pembangunan sebenar, adalah perlu untuk mengelakkan suntikan SQL. Untuk mengelakkan serangan suntikan SQL, kami boleh mengkonfigurasinya seperti berikut:
location ~* (.php|.asp|.ashx)/?$ { if ($args ~* "select.*from") { return 403; } }
Contoh ini menggunakan modul if terbina dalam Nginx untuk menghalang penyerang daripada menggunakan penyataan pilih untuk mendapatkan data daripada pangkalan data Jika ini berlaku, kembali 403 Dilarang Akses .
4. Cegah serangan XSS
Untuk serangan XSS, kami boleh mengukuhkan pengesanan input. Jika kemungkinan serangan XSS dikesan, sambungan boleh diubah hala ke URL selamat atau mesej ralat boleh dikembalikan.
if ($args ~* "<script.*>") { return 403; }
Contoh ini menggunakan modul if terbina dalam Nginx untuk mengesan sama ada terdapat kandungan dengan teg skrip bersarang dalam URL.
5. Cegah serangan CSRF
Apabila menggunakan Nginx, untuk mengelakkan serangan CSRF, anda perlu melarang permintaan daripada tapak luar. Sebagai contoh, anda boleh menambah konfigurasi berikut:
location / { if ($http_referer !~ "^https?://$host/") { return 403; } }
Contoh ini menggunakan modul if terbina dalam Nginx untuk mengehadkannya kepada hanya menerima permintaan daripada tapak $host Jika terdapat permintaan daripada tapak lain, Nginx akan kembali 403.
6. Cegah kelemahan muat turun fail
Untuk mengelakkan akses kepada fail yang tidak betul, seperti dokumen peribadi, skrip, fail konfigurasi, dll., sila gunakan strategi berikut:
location ~* .(xls|doc|pdf)$ { valid_referers none blocked server_names; if ($invalid_referer) { return 401; } }
Contoh ini Menggunakan modul valid_referers terbina dalam Nginx, apabila permintaan didapati datang dari tapak yang tidak dibenarkan, 401 akan dikembalikan.
7. Larang akses kepada beberapa URL
Dalam projek sebenar, sesetengah URL boleh digunakan oleh penyerang, seperti admin.php, login.php, dsb. Kita hanya boleh melarang akses mereka.
location ~ /(admin|login).php { deny all; }
Konfigurasi contoh ini melarang akses kepada URL yang berakhir dengan admin.php dan login.php.
8. Contoh lengkap
Akhir sekali, berdasarkan konfigurasi di atas, kita boleh mendapatkan contoh lengkap berikut:
server { listen 80; server_name yourdomain.com; # 设置过滤规则 location / { # 禁止非法请求 limit_conn_zone $binary_remote_addr zone=one:10m; limit_req_zone $binary_remote_addr zone=two:10m rate=1r/s; limit_conn one 10; limit_req zone=two burst=5 nodelay; # 防止XSS攻击 if ($args ~* "<script.*>") { return 403; } # 防止SQL注入 if ($args ~* "select.*from") { return 403; } # 禁止admin和login的访问 location ~ /(admin|login).php { deny all; } } # 防止文件下载漏洞 location ~* .(xls|doc|pdf)$ { valid_referers none blocked server_names; if ($invalid_referer) { return 401; } } }
Di atas adalah panduan untuk menulis dasar keselamatan URL Nginx . Saya harap ia dapat memberikan sedikit bantuan untuk konfigurasi Nginx anda dan meningkatkan keselamatan sistem.
Atas ialah kandungan terperinci Panduan penulisan dasar keselamatan URL Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Cara mengkonfigurasi nama domain Nginx pada pelayan awan: Buat rekod yang menunjuk ke alamat IP awam pelayan awan. Tambah blok hos maya dalam fail konfigurasi Nginx, menyatakan port pendengaran, nama domain, dan direktori akar laman web. Mulakan semula nginx untuk memohon perubahan. Akses konfigurasi ujian nama domain. Nota Lain: Pasang sijil SSL untuk membolehkan HTTPS, pastikan firewall membenarkan trafik port 80, dan tunggu resolusi DNS berkuatkuasa.

Bagaimana untuk mengesahkan sama ada nginx dimulakan: 1. Gunakan baris arahan: status sistem sistem nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. Periksa sama ada port 80 dibuka; 3. Semak mesej permulaan Nginx dalam log sistem; 4. Gunakan alat pihak ketiga, seperti Nagios, Zabbix, dan Icinga.

Langkah -langkah untuk membuat imej Docker: Tulis Dockerfile yang mengandungi arahan membina. Bina imej di terminal, menggunakan arahan membina Docker. Tag imej dan tetapkan nama dan tag menggunakan arahan tag docker.

Kaedah yang boleh menanyakan versi nginx adalah: gunakan perintah nginx -v; Lihat arahan versi dalam fail nginx.conf; Buka halaman ralat Nginx dan lihat tajuk halaman.

Memulakan pelayan Nginx memerlukan langkah-langkah yang berbeza mengikut sistem operasi yang berbeza: Sistem Linux/Unix: Pasang pakej Nginx (contohnya, menggunakan apt-get atau yum). Gunakan SystemCTL untuk memulakan perkhidmatan Nginx (contohnya, SUDO SystemCTL Mula Nginx). Sistem Windows: Muat turun dan pasang fail binari Windows. Mula Nginx menggunakan nginx.exe executable (contohnya, nginx.exe -c conf \ nginx.conf). Tidak kira sistem operasi yang anda gunakan, anda boleh mengakses IP pelayan

Di Linux, gunakan arahan berikut untuk memeriksa sama ada nginx dimulakan: Hakim status SistemCTL Nginx berdasarkan output arahan: Jika "Aktif: Aktif (Running)" dipaparkan, Nginx dimulakan. Jika "aktif: tidak aktif (mati)" dipaparkan, nginx dihentikan.

Langkah -langkah untuk memulakan Nginx di Linux: Periksa sama ada Nginx dipasang. Gunakan SistemCTL Mula Nginx untuk memulakan perkhidmatan Nginx. Gunakan SistemCTL Dayakan NGINX untuk membolehkan permulaan automatik Nginx pada permulaan sistem. Gunakan Status SistemCTL Nginx untuk mengesahkan bahawa permulaan berjaya. Lawati http: // localhost dalam pelayar web untuk melihat halaman selamat datang lalai.

Bagaimana untuk memperbaiki kesilapan dilarang nginx 403? Semak keizinan fail atau direktori; 2. Semak .htaccess File; 3. Semak fail konfigurasi nginx; 4. Mulakan semula nginx. Penyebab lain yang mungkin termasuk peraturan firewall, tetapan selinux, atau isu aplikasi.
