Aynı parametrenin kaç kez tekrarlanabileceğini sınırlayabilir miyim (Value count)?
Kısa cevap
Evet. Query, Header ve Form sekmelerindeki … value count alanı (Query Value Count, Header Value Count, Form Value Count) aynı adın bir istekte en fazla kaç kez geçebileceğini tanımlar; 0 ile 1000000 arasında tam sayı alır, boş bırakılırsa tekrar sınırı yoktur, 0 girilirse adın bir kez bulunması bile ihlaldir. Alan ortak kuralda kendi değişken kuralı olmayan bütün adlara, değişken kuralında yalnızca o ada uygulanır. Sınırın aşılması Structure Limits kategorisinde 24 puanlık ihlaldir. Header'da her başlık satırı, Form'da aynı adla gelen her değer ve dosya bir tekrar sayılır. JSON ve Xml bölümlerinde bu alan yoktur. Any paths varsayılanı Query 128, Header 1, Form 512'dir.
Sorun: Aynı Parametre İstekte Tekrar Ediyor
Parametre kirletme (?id=1&id=2) ya da aynı başlığın birden fazla satırla gönderilmesi, uygulamanın ve önündeki bileşenlerin farklı değeri okumasına yol açabilir. Bir adın istekte kaç kez geçebileceği sınırlanmak isteniyor.
Çözüm: İki Yöntem
İki yöntem aynı alanı yazar; biri seçilir.
| Durumunuz | Uygun yöntem |
|---|---|
| Ayarı arayüzden yapmak istiyorum | Yöntem 1: … value count alanı |
| Betik ya da komut satırıyla yapmak istiyorum | Yöntem 2: WEB-CLI |
Yöntem 1: … Value Count Alanı Önerilen
- Nasıl çalışır Adın istekteki değer sayısı alandaki sınırla karşılaştırılır; sınırı aşan her ad ayrı ihlal sayılır.
- Nerede açılır Left Monitor Panel → WAF-Protected vServices → vService → WAF Management → N page types → kural → Query / Header / Form → Add Argument Rule for … ya da Add Common Rule for …
- GereksinimStructure Checks açık
- vService tipi WAF açık HTTP vService
- Any paths varsayılanları Query ortak kuralı 128, Header ortak kuralı 1, Form ortak kuralı 512; varsayılan header kurallarında 1 (
range10,x-scanner0)
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 … value count alanı 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, Header ya da Form sekmesine tıklanır.
Tek bir ad için değişken tablosunun üstündeki Add Argument Rule for … tıklanır; bölümdeki bütün adlar için Add Common Rule for … (kural kendi ortak kuralına sahipse Edit Common Rule for …) tıklanır.
Değişken kuralında Argument Name kutusuna ad yazılır (ör. id; Header'da başlık adı küçük harfle yazılır). … value count alanına tam sayı girilir (ör. 1). Değişken kuralında formdaki diğer değer alanları da bu ad için geçerli olur; boş bırakılan alan o denetim için kısıt yok demektir.
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
Host grubu Blocking modundayken ad iki kez gönderilir.
Komut: curl -s -o /dev/null -w "%{http_code}\n" "https://www.example.com/urun?id=1&id=2"
418Event Logs kaydının Attacks sekmesine bakılır.
Attack area: Query@id · Attack name: Query value count; Description: 2>1Yöntem 2: WEB-CLI
- Nasıl çalışır Sınır WEB-CLI ile
--argMultiplealanı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 Any paths değerleri değil komutun varsayılanları yazar (valueLength0–1024,argOwaspaçık)
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 defaultHostAynı adla kural varsa komut reddedilir; o durumda waf rule-parts list ile parçanın kimliği bulunup update … id <parça> --argMultiple 1 kullanılır:
waf rule-parts add poolId <vService> hostGroupId defaultHost ruleId <kural> loc query --arg id --argMultiple 1Doğrulama
Kuralın parçaları listelenir.
Komut: waf rule-parts list poolId <vService> hostGroupId defaultHost ruleId <kural>
query: idSık Yapılan Hatalar
- 0'ı "kısıt yok" sanmak. 0, adın istekte hiç bulunmamasını ister; tekrar sınırı kaldırılacaksa alan boş bırakılır.
- Any paths kuralının Header sınırını unutmak. Any paths kuralının Header ortak kuralında sınır 1'dir; kendi değişken kuralı olmayan bir başlık iki satır gelirse ihlal üretir. Meşru olarak tekrarlanan bir başlık için o başlığa değişken kuralı açılıp sınır yükseltilir.
- JSON'da tekrar sınırı aramak. JSON ve Xml bölümlerinde … value count alanı yoktur; dizi uzunluğu JSON Key Count ile sınırlanır (Parametre adı uzunluğu ve parametre sayısı için sınır koyabilir miyim?).
Dokümantasyonda nasıl yapılır
