Toplam header / query boyutunu sınırlayabilir miyim?
Kısa cevap
Evet. Query ortak kuralındaki Total Query Size, ? işareti hariç ham sorgu metninin tamamını (adlar, değerler, & ve = ayraçları, tekrarlar dahil); Header ortak kuralındaki Total Header Size, istek satırı hariç bütün başlık satırlarının toplamını bayt olarak sınırlar. Path için karşılığı kuralın Path Length alanı, her türden gövde için Raw sekmesindeki Raw Body Size alanıdır. Aşım Structure Limits kategorisinde 24 puanlık ihlaldir ve Checks penceresindeki Structure Checks anahtarına bağlıdır. Any paths varsayılanı Query için 262144, Header için 65536 bayttır.
Sorun: Şişirilmiş Sorgu ya da Başlık Bloklarıyla İstek Geliyor
Çok uzun sorgu dizeleri ya da büyük başlık bloklarıyla gelen istekler, uygulamada taşma ve kaynak tüketme riskine yol açıyor. Tek tek ad ya da değer sınırlarının ötesinde bölümün toplamına üst sınır konmak isteniyor.
Çözüm: İki Yöntem
İki yöntem aynı alanları yazar; biri seçilir.
| Durumunuz | Uygun yöntem |
|---|---|
| Ayarı arayüzden yapmak istiyorum | Yöntem 1: Query ve Header ortak kuralı |
| Betik ya da komut satırıyla yapmak istiyorum | Yöntem 2: WEB-CLI |
Yöntem 1: Query ve Header Ortak Kuralı Önerilen
- Nasıl çalışır Bölümün ortak kuralına toplam boyut sınırı yazılır; sınırı aşan istek ihlal sayılır.
- Nerede açılır Left Monitor Panel → WAF-Protected vServices → vService → WAF Management → N page types → kural → Query / Header → Add Common Rule for …
- GereksinimStructure Checks açık
- vService tipi WAF açık HTTP vService
- Diğer bölümler Path toplamı Path Length, gövde toplamı Raw Body Size ile sınırlanır; JSON, Xml ve Form sekmelerinde toplam boyut alanı yoktur
| Alan | Ölçülen | Any paths varsayılanı |
|---|---|---|
| Total Query Size | ? sonrasındaki ham sorgu metninin bayt uzunluğu | ≤ 262144 |
| Total Header Size | Başlık satırlarının (ad, değer, satır sonları) toplam bayt uzunluğu | ≤ 65536 |
| Path Length | Path'in uzunluğu (URL Decoding açıksa çözülmüş hâli) | 1–8192 |
| Raw Body Size | İstek gövdesinin bayt uzunluğu; gövde türünden bağımsız | 1–268435456 |
Adım adım yapılandırma
Structure Checks WAF açıldığında açık gelir; kapatıldıysa Left Monitor Panel → WAF-Protected vServices → vService → WAF Management sekmesinde Inspection & Blocking bölümündeki Checks kartının sağ üstündeki kalem ikonu tıklanır (Checks Edit ekranı).
Structure Checks açık konuma alınır. Anahtar kapalıyken toplam boyut alanları formda ve panelde gizlenir.
Edit tıklanır.
WAF Management sekmesinde host grubunun N page types satırına tıklanır (Page Types ekranına erişim).
Listede sayfa tipinin satırına tıklanır; kuralın detay paneli sağda açılır (panele erişim).
Query ya da Header sekmesine tıklanır.
Tablonun üstündeki Add Common Rule for Query (ya da … for Header) tıklanır; kural o bölüm için kendi ortak kuralına sahipse buton Edit Common Rule for … olarak görünür. Ekleme formu Any paths kuralının değerleriyle dolu açılır.
Total Query Size ya da Total Header Size için işleç ve bayt değeri seçilir (ör. Less than or Equal to 4096). Header sınırı, sayfaya gelen çerezlerin ve yetkilendirme başlıklarının toplamından küçük seçilmez.
Add (düzenlemede Edit) tıklanır; değişiklik ayrı bir dağıtım adımı olmadan uygulanır. Cluster kurulumunda varsayılan auto-sync ile eş cihaza da gönderilir; Manual Sync Mode açıksa eş cihaza elle gönderilir.
Doğrulama
Kuralın Query ya da Header sekmesinde toplam boyut satırına bakılır.
≤ 4096Monitor ya da Blocking modunda sınırı aşan bir istek gönderilip Event Logs kaydının Attacks sekmesine bakılır.
Attack name: Total query size; Description: 5000>4096 gibiYöntem 2: WEB-CLI
- Nasıl çalışır Sınır WEB-CLI ile
--querySizeya da--headerSizealanlarına yazılır. - Nerede açılır WEB-CLI →
waf rule-parts - Gereksinim WEB-CLI erişimi; Structure Checks açık (
waf options update poolId <vService> --syncWithDefaultFwRules false --structureChecks true) - vService tipi WAF açık HTTP vService
- Ön dolum farkı
addyazılmayan alanlara komutun varsayılanlarını yazar: Query'dequerySize≤ 8192, Header'daheaderSize≤ 4096
Adım adım yapılandırma
Varsayılan host grubunun kimliği defaultHost'tur; kural kimlikleri id sütununda listelenir:
waf fw-rules list poolId <vService> hostGroupId defaultHostAçıklama sütununda query: (all keys) ya da header: (all keys) görünen satır bölümün ortak parçasıdır:
waf rule-parts list poolId <vService> hostGroupId defaultHost ruleId <kural>İşleç çift tırnak içinde yazılır:
waf rule-parts update poolId <vService> hostGroupId defaultHost ruleId <kural> id <parça> --querySize.op "<=" --querySize.val 4096add yazılmayan diğer alanlara da komutun varsayılanlarını yazar (ör. queryKeyCount ≤ 16, valueLength 0–1024); bu sınırlar istenmiyorsa komutta verilir:
waf rule-parts add poolId <vService> hostGroupId defaultHost ruleId <kural> loc query --querySize.op "<=" --querySize.val 4096Doğrulama
Parça yeniden görüntülenir.
Komut: waf rule-parts show poolId <vService> hostGroupId defaultHost ruleId <kural> <parça>
querySize.op ve querySize.val satırlarında yeni değerSık Yapılan Hatalar
- Header toplamını çok küçük tutmak. Büyük çerez ve yetkilendirme başlığı taşıyan tarayıcı istekleri engellenir; sınır Any paths kuralına yazılırsa kendi Header kuralı olmayan bütün path'ler etkilenir.
- WEB-CLI'da Header parçasını
addile eklemek.addkomutuheaderSizeiçin 4096 varsayılanını yazar; sınır komutta verilmezse büyük başlıklı istekler engellenebilir. - Raw body size'ı yalnızca ham gövdeler için sanmak. Raw Body Size her türden gövdeye (JSON, Xml, form dahil) uygulanır; gövde boyutu bu alanla sınırlanır (Raw sekmesi ne inceler; parse edilemeyen içerik ne olur?).
- Bu sınırı gövde işleme sınırıyla karıştırmak. Max. Body Size to Process(kB) denetim için çözümlenebilecek en büyük gövde boyutunu belirler (bu boyutu aşan gövde çözümlenmez) ve ayrı bir ayardır (Max. body size to process en fazla kaç olabilir; log sınırı ile ilişkisi nedir?).
- Sorgu boyutuna
?işaretini dahil saymak. Ölçüm?sonrasındaki ham metindir; URL kodlu karakterler kodlu hâliyle sayılır (%20üç bayt).
Dokümantasyonda nasıl yapılır
