Rumah Operasi dan penyelenggaraan Nginx Panduan penulisan dasar keselamatan URL Nginx

Panduan penulisan dasar keselamatan URL Nginx

Jun 10, 2023 pm 08:39 PM
nginx Strategi keselamatan url

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:

  1. Suntikan SQL
  2. XSS attack
  3. Muat turun fail haram
  4. Serangan CSRF
  5. 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:

  1. Ungkapan biasa
  2. Konfigurasi Nginx sintaks fail
  3. 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;
}
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

Contoh ini melakukan perkara berikut:

  1. 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)
  2. Sekat jika alamat IP yang sama menghantar lebih daripada 100 permintaan HTTP dalam masa 5 saat.
  3. 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;
    }
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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;
        }
    }
}
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara mengkonfigurasi nama domain pelayan awan di nginx Cara mengkonfigurasi nama domain pelayan awan di nginx Apr 14, 2025 pm 12:18 PM

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.

Cara memeriksa sama ada nginx dimulakan Cara memeriksa sama ada nginx dimulakan Apr 14, 2025 pm 01:03 PM

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.

Cara membuat cermin di Docker Cara membuat cermin di Docker Apr 15, 2025 am 11:27 AM

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.

Cara memeriksa versi nginx Cara memeriksa versi nginx Apr 14, 2025 am 11:57 AM

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.

Cara memulakan pelayan nginx Cara memulakan pelayan nginx Apr 14, 2025 pm 12:27 PM

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

Bagaimana untuk memeriksa sama ada Nginx dimulakan? Bagaimana untuk memeriksa sama ada Nginx dimulakan? Apr 14, 2025 pm 12:48 PM

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.

Cara memulakan nginx di linux Cara memulakan nginx di linux Apr 14, 2025 pm 12:51 PM

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.

Cara menyelesaikan nginx403 Cara menyelesaikan nginx403 Apr 14, 2025 am 10:33 AM

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.

See all articles