Path Length ve Path Depth kısıtları ne işe yarar?
Kısa cevap
İkisi de path'in biçimine sınır koyan yapısal denetimlerdir ve yalnızca glob kurallarda ve Any Paths'te tanımlanır. Path Length, sorgu dizesi hariç ve sondaki / atılmış path'in uzunluğunu; Path Depth path'teki / sayısını (/a/b/c için 3) ölçer. İşleç olarak No restriction, Less than or equal to, Equals to, Greater than or equal to ya da Range seçilir. Kısıtı aşan istek Structure Limits kategorisinde Path length ya da Path depth ihlali olarak 24 puan alır; Blocking modunda tek başına engellenir, Monitor modunda kaydedilir, Learning modunda denetlenmez. Any paths'in varsayılanı 1–8192 uzunluk ve en çok 256 derinliktir; yeni glob kural No restriction ile başlar. Exact kuralın formunda bu alanlar yoktur ve kısıtlar Any paths'ten devralınmaz; yalnızca Import (OpenAPI) ile gelen exact kural Any paths'in varsayılan sınırlarını, öğrenmeyle açılan exact kural ise Any paths'in Path depth değerini oluşturulurken kopyalar ve kural formdan kaydedilene kadar uygular. Denetim ve form alanları Structure Checks anahtarı açıkken çalışır.
Nasıl Çalışır?
| Path length | Path depth | |
|---|---|---|
| Ölçtüğü | Path'in uzunluğu (sorgu dizesi hariç, sondaki / atılmış) | Path'teki / sayısı: / → 1, /a/b/c → 3 |
| İşleçler | No Restriction · Less than or Equal to · Equals to · Greater than or Equal to · Range (iki uç dahil) | Aynı |
| Any paths varsayılanı | Range 1–8192 | Less than or Equal to 256 |
| Yeni glob kural | No Restriction | No Restriction |
| Exact kural | Formda yok; Add ile eklenen kuralda denetim yapılmaz (Import (OpenAPI) ile gelen kural 1–8192 değerini taşır) | Formda yok; Add ile eklenen kuralda denetim yapılmaz (Import (OpenAPI) ile gelen kural en çok 256 değerini, öğrenmeyle açılan kural Any paths'in o anki değerini taşır) |
| İhlal | Path length, Structure Limits, 24 puan | Path depth, Structure Limits, 24 puan |
- 24 puan her OWASP Protection Level'da engelleme eşiğine ulaşır; bu yüzden tek bir ihlal Blocking modunda isteği engeller.
- Kısıt devralınmaz: eşleşen kuralın kendi değeri uygulanır. Exact kural eşleşirse exact kuralın kendi kaydındaki değer (Add ile eklenen kuralda hiçbiri) uygulanır; glob kurallar eşleşirse ilk eşleşen glob kuralın değeri geçerlidir (Bir istek birden fazla page type'a uyarsa kurallar nasıl uygulanır (exact path önceliği, glob kurallarının Any Paths ile birleşmesi)?).
- Structure Checks kapalıyken iki alan Add ve Edit formlarında gösterilmez ve denetim yapılmaz; Allowed Methods bu anahtardan etkilenmez.
- Değer Page types → kural → Edit yolunda işleç seçilip değer girilerek ve formun Edit butonuyla kaydedilerek ayarlanır (Any paths kuralını düzenleme). WEB-CLI'da
waf fw-rules update poolId <vService> hostGroupId <grup> id <kural> --pathSize.op "<=" --pathSize.val 128komutu kullanılır; derinlik için aynı biçimde--pathDepth.op/--pathDepth.valyazılır (yol kısıtları). - Merge'de iki kuralın sınırlarını kapsayan aralık alınır; kısıtı olmayan (No Restriction) taraf hesaba katılmaz (Merge sırasında ayarlar (metotlar, OWASP) nasıl birleştirilir?).
- Aggressive düzeyde varsayılan şablonla kurulan Any paths daha dar sınırlarla gelir (1–1024 uzunluk, en çok 8 derinlik) (Kuralları varsayılan ayarlara nasıl döndürürüm?).
Ne İşe Yarar?
| Kısıt olmadan | Kısıt ile |
|---|---|
| Aşırı uzun path'lerle yapılan tarama ve taşma denemeleri uygulamaya ulaşır | Sınırı aşan path ihlal üretir; Blocking modunda istek uygulamaya iletilmez |
Çok derin path'ler (/a/b/c/…) dizin taraması için kullanılabilir | Derinlik, uygulamanın gerçek yapısıyla sınırlanır |
Sıkılaştırma önce Monitor modunda izlenir; meşru path'lerin ihlal üretmediği doğrulandıktan sonra Blocking'e geçilir.
Sık Karıştırılan Noktalar
- "Any paths'in 8192 sınırı bütün path'lere uygulanır." Kısıt devralınmaz; kendi kuralı olan path'e o kuralın kendi değeri uygulanır, Add ile eklenen exact kuralda hiç uygulanmaz.
- "Derinlik segment sayısıdır." Derinlik
/sayısıdır;/a/b/ciçin 3, kök/için 1'dir. - "Structure checks kapalıyken alanlar boş bırakılmış demektir." Kayıtlı değerler korunur; anahtar açıldığında formda yeniden görünür ve uygulanır.
Dokümantasyonda nasıl yapılır
