Özel kurallarda hangi regex söz dizimi destekleniyor (backreference, lookaround); kuralı kaydetmeden test edebilir miyim?
Kısa cevap
Özel kural desenleri TR7'nin imza motorunda derlenir; söz dizimi PCRE'nin bir alt kümesidir (Pattern (Regex)). Karakter sınıfları, niceleyiciler, gruplar, alternatifler ve ^, $, \b gibi çapalar kullanılabilir. Geri referans (\1, \k<ad>, \g{…}, (?P=ad)), lookahead ve lookbehind ((?=…), (?!…), (?<=…), (?<!…)), atomik grup (?>…), sahiplenen niceleyici (ör. a*+), koşullu grup (?(…)…), özyineleme ve alt yordam çağrısı ((?R), (?1), (?&ad)) ile \K, \G ve \C kaçışları desteklenmez. Desen büyük/küçük harf duyarlı derlenir, en fazla 4.096 karakter olabilir ve boş dizeyle eşleşebilen bir desen (ör. a*) derlenmez. Evet, kaydetmeden test edilebilir: Add Custom Rule ve Edit Custom Rule pencerelerindeki Pattern (Regex) alanı, desen yazılırken cihazdaki imza motorunda derlenip sonucu gösterir; alanın sağındaki deneme ikonu örnek girdilerde eşleşmeyi gösterir. Derlenmeyen desen Accept ile kaydedilemez.
Söz Dizimi
| Yapı | Destek |
|---|---|
Karakter sınıfları, niceleyiciler (*, +, ?, {m,n}), gruplar ((…), (?:…)), alternatifler, ^ $ \b | Var |
Geri referans \1, \k<ad>, \g{…}, (?P=ad) | Yok |
Lookahead (?=…) (?!…), lookbehind (?<=…) (?<!…) | Yok |
Atomik grup (?>…), sahiplenen niceleyici a*+, koşullu grup (?(…)…) | Yok |
Özyineleme / alt yordam (?R), (?1), (?&ad); \K, \G, \C | Yok |
| Harf duyarsızlık | Formda seçenek yok; varyantlar karakter kümesiyle yazılır (ör. [Ss]elect) |
| Uzunluk | En fazla 4.096 karakter |
Boş dizeyle eşleşebilen desen (ör. a*) | Derlenmez |
Büyük tekrar sınırı (ör. {1,1000}) | Derlenir; 256 ve üzeri sınırda derlenmiş imzanın büyüyebileceğine dair bilgi notu görünür |
Desteklenmeyen bir yapı yazıldığında alanın altında The signature engine does not support this construct: … iletisi görünür. Lookaround gerektiren bir koşul çoğu zaman desen bölünerek ya da kapsam daraltılarak karşılanır; ör. yalnızca sorgu parametresinde aranacak bir desen için Inspection Scopes listesinde yalnızca Query seçilir.
Kaydetmeden Test
Add Custom Rule ya da Edit Custom Rule penceresinde Pattern (Regex) alanına desen yazılır. Kapanmamış grup, tekrar edecek öge olmaması gibi yazım hataları anında; motorun derleme sonucu kısa bir bekleme sonrası alanın altında görünür: başarıda Compiled by the signature engine ve derlenmiş imzanın boyutu (2 MiB'tan itibaren uyarı, 16 MiB'tan itibaren tehlike renginde), başarısızlıkta motorun hata metni. Alanın sağındaki WAF rozeti desenin imza motorunda çalışacağını belirtir.
Alanın sağındaki deneme (şişe) ikonu tıklanır; altında örnek girdi kutusu açılır.
Sample input… kutusuna örnek yazılır; son satırdaki + ile yeni örnek eklenir. Her örnek için Matches this input (eşleşen bölüm vurgulu) ya da No match görünür. Ör. ^/legacy-admin(/|$) deseni /legacy-admin/users için eşleşir, /Legacy-Admin için eşleşmez.
Accept tıklanır; formda çözülmemiş hata varken buton pasiftir. Cihaz deseni kayıt sırasında yeniden derler; derlenemezse Invalid WAF pattern hatası görünür ve pencere açık kalır.
- Çok kısa aralıklarla çok sayıda deneme yapılırsa motor istekleri bir süre yavaşlatır (Too many requests in a row …); birkaç saniye beklenir.
- Aynı motor, sayfa tiplerindeki değer kalıbı alanlarında da kullanılır; orada aA butonuyla harf duyarsız eşleştirme seçilebilir. Değer kalıpları, WAF'ın trafikte onları derlerken kullandığı ayarlarla denetlenir. Bu yüzden
^[a-z]*$gibi boş değerle de eşleşebilen çapalı bir desen değer kalıbında kabul edilir, özel kural deseninde ise derlenmez. Geri referans ve lookaround değer kalıplarında da desteklenmez (Bir parametrenin değerini uzunluk veya regex desenle kısıtlayabilir miyim (Value length / Value pattern)?).
Sık Karıştırılan Noktalar
- "Tarayıcıda ya da başka bir regex aracında çalışan desen burada da çalışır." Lookaround ve geri referans içeren desenler imza motorunda derlenmez.
- "Özel kurala harf duyarsızlık seçeneği eklenir." Özel kural formunda bu seçenek yoktur; büyük ve küçük harf varyantları desende karakter kümesiyle yazılır.
- "Deneme alanında eşleşmesi yeterlidir." Kural yalnızca hem Inspection Scopes listesinde bulunan hem de OWASP Check anahtarı açık olan bölümlerde taranır; deneme bu koşulları içermez.
Dokümantasyonda nasıl yapılır
