Rumah > Artikel > Operasi dan penyelenggaraan > 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:
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:
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:
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!