Glob pattern'leri (*, **) nasıl yazılır; path test aracı nasıl kullanılır?
Kısa cevap
Glob deseni / ile başlar (** içeren desen, ör. **/login, / olmadan da yazılabilir) ve path'in tamamını tarif eder (Glob Path). * tek bir segment içinde herhangi bir karakter dizisini karşılar ve / sınırını aşmaz; ** segment sınırlarını aşar (/files/** /files/a/b.png'yi kapsar); ? tek karakteri, [0-9] karakter kümesini, {png,jpg} alternatifleri karşılar. Eşleşme büyük/küçük harfe duyarlıdır ve sorgu dizesine bakmaz. Add ya da Edit formunda Path alanına joker içeren değer yazılınca alanın altında Input / Result test tablosu belirir: + ile satır eklenir, Input'a örnek path yazılır, Result yeşil onay ya da kırmızı çarpı ile eşleşmeyi anında gösterir; satırlar kaydedilmez. Desen ayrıca WEB-CLI'da waf fw-rules add ile yazılır; orada test tablosu yoktur.
Sorun: Glob Deseni Beklenen Path'leri Yakalamıyor
Bir kural birden çok path'i kapsayacak biçimde yazılmak isteniyor; desenin tam olarak hangi istekleri yakaladığı kaydetmeden görülmeli. Desene uymayan path'ler kuralın dışında kalır ve başka bir glob kurala ya da Any Paths kuralına düşer.
Çözüm: İki Yöntem
| Durumunuz | Uygun yöntem |
|---|---|
| Deseni yazıp örnek path'lerle denemek | Yöntem 1: Path alanı ve test tablosu |
| Betik ya da komut satırı | Yöntem 2: WEB-CLI |
Desen örnekleri (test tablosunun kullandığı eşleştiriciyle denenmiştir):
| Desen | Eşleşir | Eşleşmez |
|---|---|---|
/api/v*/login | /api/v1/login, /api/v2/login | /api/v1/auth/login, /API/v1/login |
/api/* | /api/x | /api/v1/login, /api |
/files/** | /files/a, /files/a/b.png | /filesx/a, /files (test tablosu eşleşmiş gösterir, çalışma anında eşleşmez) |
/img/*.{png,jpg} | /img/a.png, /img/a.jpg | /img/a.gif, /img/x/a.png |
/user/[0-9]* | /user/1, /user/123 | /user/a1 |
/a?c | /abc | /ac, /abbc |
/static/**/*.js | /static/a.js, /static/x/y/a.js | /static/a.css |
Yöntem 1: Path Alanı ve Test Tablosu Önerilen
- Nasıl çalışır Desen kural formunun Path alanına yazılır; test tablosu örnek path'lerin desene uyup uymadığını kaydetmeden gösterir.
- Nerede açılır Left Monitor Panel → WAF-Protected vServices → vService → WAF Management → host grubunun mod kartı → N page types → Add ya da Edit
- Gereksinim vService'te WAF koruması etkin
- vService tipi WAF koruması etkin HTTP vService
Adım adım yapılandırma
Left Monitor Panel'de WAF-Protected vServices sekmesinde vService'e tıklanır, WAF Management sekmesi açılır ve ilgili host grubunun mod kartı altındaki N page types satırına tıklanır (ekrana erişim).
Yeni kural için araç çubuğundaki Add tıklanır; var olan kuralın desenini değiştirmek için satır seçilip Edit tıklanır.
Path alanına desen yazılır. Joker algılandığında alanın sağındaki küre ikonu etkinleşir, alanın altında test tablosu belirir ve Structure Checks açıksa forma Path length ile Path depth alanları eklenir (ekleme ekranı (glob)). Bilgi ikonu glob söz dizimini anlatan sayfayı yeni sekmede açar.
Tablonun Result başlığındaki + ikonuyla yeni satır eklenir (tablo bir boş satırla açılır).
Input alanına sorgu dizesi olmadan örnek istek path'i yazılır; Result hücresi desene uyan path'te yeşil onay, uymayan path'te kırmızı çarpı gösterir. Kapsanması gereken ve dışarıda kalması gereken path'ler ayrı satırlarda denenir; gereksiz satır çöp ikonuyla silinir. Tablo satırları formla birlikte kaydedilmez, tablo her açılışta boş başlar.
Diğer alanlar doldurulduktan sonra formun altındaki Add (yeni kural) ya da Edit (var olan kural) tıklanır; kural ayrı bir dağıtım adımı olmadan uygulanır. Cluster kurulumunda varsayılan auto-sync ile değişiklik eş cihaza da otomatik gönderilir; Manual Sync Mode açıksa Synchronize ile elle gönderilir.
Doğrulama
Kapsanması ve dışarıda kalması gereken örnek path'lerin Result hücrelerine bakılır.
Kapsanacaklar yeşil onay, dışarıda kalacaklar kırmızı çarpıDesene uyan bir path'e kuralı ihlal eden bir istek gönderilir; Event Logs kaydının Request & Location sekmesindeki Matching Path Rules satırına bakılır.
Glob kuralın deseniYöntem 2: WEB-CLI
- Nasıl çalışır Desen
waf fw-rules addkomutunda--path.inputalanına yazılır; joker içeren değer kendiliğinden glob kural olur. Test tablosu yoktur; desen önceden arayüzdeki tabloyla denenebilir. - Nerede açılır WEB-CLI →
waf fw-rules add·waf fw-rules list - Gereksinim WEB-CLI erişimi; host grubunun kimliği (
waf host-groups list poolId <vService>ile) - vService tipi WAF koruması etkin HTTP vService
Adım adım yapılandırma
Joker içeren değer tek tırnakla yazılır (istek yolu):
waf fw-rules add poolId <vService> hostGroupId <grup> --path.input '/api/v*/login'Komut başarılı olduğunda çıktı vermez.
waf fw-rules list poolId <vService> hostGroupId <grup>Doğrulama
Kural listesi yeniden alınır ya da arayüzde Page types listesine bakılır.
/api/v*/login satırı (arayüzde vurgu rengiyle)Sık Yapılan Hatalar
*ile birden çok segment beklemek.*tek segmenttir;/api/*/api/v1/loginile eşleşmez,/api/**eşleşir.- Kök path'in desene dahil olduğunu varsaymak.
/api/*/apiile eşleşmez;/api/**de çalışma anında/apiile eşleşmez, test tablosu ise bu durumda eşleşmiş gösterir. Kökün kendisi (/api) için ayrı bir exact kural eklenir. - Büyük/küçük harf farkını gözden kaçırmak.
/API/v1/login/api/v*/loginile eşleşmez. - Sorgu dizesini desene katmak. Eşleşme yalnızca path üzerinde yapılır;
?desende tek karakter jokeridir.
Dokümantasyonda nasıl yapılır
