Plug-in request-block digunakan untuk memblokir permintaan HTTP berdasarkan karakteristik seperti URL dan header permintaan. Plug-in ini melindungi sumber daya situs web dari paparan eksternal. Topik ini menjelaskan cara mengonfigurasi plug-in request-block.
Jenis plug-in
Plug-in perlindungan keamanan.
Bidang
Bidang | Tipe data | Diperlukan | Nilai default | Deskripsi |
block_urls | array of string | Tidak. Anda harus mengonfigurasi block_urls, block_headers, atau block_bodys. | - | URL yang digunakan untuk mencocokkan permintaan yang akan diblokir. |
block_headers | array of string | Tidak. Anda harus mengonfigurasi block_urls, block_headers, atau block_bodys. | - | Header yang digunakan untuk mencocokkan permintaan yang akan diblokir. |
block_bodys | array of string | Tidak. Anda harus mengonfigurasi block_urls, block_headers, atau block_bodys. | - | Badan permintaan yang digunakan untuk mencocokkan permintaan yang akan diblokir. |
blocked_code | number | Tidak | 403 | Kode status HTTP yang dikembalikan jika permintaan diblokir. |
blocked_message | string | Tidak | - | Badan respons HTTP yang dikembalikan jika permintaan diblokir. |
case_sensitive | bool | Tidak | true | Menentukan apakah kondisi yang digunakan untuk mencocokkan permintaan peka huruf besar/kecil. Secara default, kondisi bersifat peka huruf besar/kecil. |
Contoh
Blokir permintaan berdasarkan URL
block_urls:
- swagger.html
- foo=bar
case_sensitive: falsePermintaan berikut diblokir sesuai konfigurasi di atas:
curl http://example.com?foo=Bar
curl http://exmaple.com/Swagger.htmlBlokir permintaan berdasarkan header permintaan
block_headers:
- example-key
- example-valuePermintaan berikut diblokir sesuai konfigurasi aturan di atas.
curl http://example.com -H 'example-key: 123'
curl http://exmaple.com -H 'my-header: example-value'Blokir permintaan berdasarkan badan permintaan
block_bodys:
- "hello world"
case_sensitive: falsePermintaan berikut diblokir sesuai konfigurasi di atas:
curl http://example.com -d 'Hello World'
curl http://exmaple.com -d 'hello world'Blokir permintaan untuk rute atau nama domain tertentu
Terapkan konfigurasi plug-in berikut pada rute route-a dan route-b:
block_bodys:
- "hello world"Terapkan konfigurasi plug-in berikut pada nama domain *.example.com dan test.com:
block_urls:
- "swagger.html"
block_bodys:
- "hello world"Rute
route-adanroute-badalah rute yang ditentukan saat pembuatan rute gateway. Jika permintaan klien cocok dengan salah satu rute, aturan yang dikonfigurasi untuk rute tersebut akan diterapkan.Nama domain
*.example.comdantest.comdigunakan untuk mencocokkan nama domain dalam permintaan. Jika permintaan klien cocok dengan salah satu nama domain, aturan yang dikonfigurasi untuk nama domain tersebut akan diterapkan.Aturan yang Anda konfigurasikan diterapkan secara berurutan. Jika aturan pertama cocok, aturan berikutnya diabaikan.
Batas ukuran badan permintaan
Jika block_bodys dikonfigurasi, hanya permintaan dengan badan kurang dari 32 MB yang digunakan untuk pencocokan berdasarkan badan. Jika badan permintaan lebih besar dari 32 MB dan tidak memenuhi aturan yang ditentukan oleh block_urls dan block_headers, permintaan tersebut tidak diblokir.
Jika block_bodys dikonfigurasi dan badan permintaan melebihi nilai DownstreamConnectionBufferLimits yang dikonfigurasi untuk gateway, pesan kesalahan 413 Payload Too Large dikembalikan. Anda dapat meningkatkan nilai DownstreamConnectionBufferLimits pada halaman konfigurasi parameter. Namun, peningkatan ini akan meningkatkan penggunaan memori gateway secara signifikan. Berhati-hatilah saat melakukan operasi ini.