Operatörler
Operatör, bir koşulda alanın değerle nasıl karşılaştırılacağını belirler: tam eşitlik mi, liste üyeliği mi, metin içinde arama mı? Her koşul IF {alan} {operatör} {değer} sözdizimini izler ve konsol, seçtiğiniz alanın tipine göre yalnızca geçerli operatörleri sunar.
14 operatör beş gruba ayrılır:
| Grup | Operatörler | Ne zaman |
|---|---|---|
| Eşitlik | == != | Değer tek ve kesin: bir ülke, bir metod, bir on/off sinyali |
| Liste üyeliği | in not_in | Aynı alan için birden çok kabul/red değeri |
| Metin arama | contains not_contains | Değerin alanın herhangi bir yerinde geçmesi yeterli |
| Önek / sonek | has_prefix has_suffix has_not_prefix has_not_suffix | Path ve URI’nin başı/sonu — dizin ve uzantı hedefleme |
| Sayısal karşılaştırma | gt ge lt le | Skor ve durum kodu gibi sayısal alanlarda eşik/aralık |
Metin karşılaştırmaları büyük/küçük harfe duyarlıdır: http.user_agent contains bot koşulu Googlebot/2.1 içindeki küçük harfli bot parçasını yakalar ama BOT ile eşleşmez. Değer girerken alanın gerçek biçimini esas alın — örneğin doğrulanmış bot adları küçük harflidir (googlebot, bingbot).
Hızlı referans
Bölüm başlığı “Hızlı referans”Konsolda sütunu konsol menüsündeki etikettir; Operatör sütunu Kural Önizleme’de görünen teknik addır.
| Konsolda | Operatör | Örnek |
|---|---|---|
| eşittir | == | ip.country == TR |
| eşit değildir | != | http.request.method != GET |
| listede | in | ip.country in TR, DE, FR |
| listede değil | not_in | ip.country not_in RU, CN |
| içerir | contains | http.user_agent contains bot |
| içermez | not_contains | http.host not_contains staging |
| ile başlar | has_prefix | http.request.base_uri has_prefix /api |
| ile biter | has_suffix | http.request.base_uri has_suffix .php |
| ile başlamaz | has_not_prefix | http.request.base_uri has_not_prefix /static |
| ile bitmez | has_not_suffix | http.request.base_uri has_not_suffix .js |
| büyüktür | gt | waf.bot_score gt 80 |
| büyük eşittir | ge | waf.bot_score ge 60 |
| küçüktür | lt | waf.bot_score lt 20 |
| küçük eşittir | le | waf.bot_score le 40 |
Eşitlik: == ve !=
Bölüm başlığı “Eşitlik: == ve !=”En temel operatörler: alan, verilen değerle tam olarak eşleşiyor mu (==) ya da eşleşmiyor mu (!=)?
# Tek ülkeyi engelleIF ip.country == RUTHEN block
# GET dışındaki tüm metodları sıkılaştırIF http.request.method != GETAND http.request.base_uri has_prefix /apiTHEN ratelimit 30/60s
# Tor çıkış düğümlerine CAPTCHAIF waf.client.tor == onTHEN captchaKonsolda bu seçimlerle:
- Tek ülkeyi engelle — Alan Ülke · Operatör eşittir · Değer
RU→ Aksiyon Engelle - GET dışını sıkılaştır — Alan HTTP Metodu · Operatör eşit değildir · Değer
GETVE Alan Path (sorgusuz) · Operatör ile başlar · Değer/api→ Aksiyon Rate Limit (30 istek / 60 sn) - Tor çıkışlarına CAPTCHA — Alan Tor · Operatör eşittir · Değer Evet → Aksiyon CAPTCHA
waf.client.bot, waf.client.vpn, waf.client.tor gibi on/off sinyalleri yalnızca eşitlik operatörlerini (==, !=) kabul eder; metin ve liste operatörleri bu alanlarda sunulmaz.
Liste üyeliği: in ve not_in
Bölüm başlığı “Liste üyeliği: in ve not_in”Aynı alanı birden çok değerle karşılaştırır: alan listedeki herhangi bir girdiyle eşleşirse in doğru olur; not_in ise hiçbiriyle eşleşmediğinde. Değerler virgülle ayrılır; liste başına en çok 256 değer girilebilir.
# Üç ülkeye izin ver, kalanını engelle (iki kural)IF ip.country in TR, DE, FRTHEN allow
IF ip.country not_in TR, DE, FRTHEN block
# Arama ve izleme botları dışındaki doğrulanmış botları engelleIF waf.client.bot == onAND waf.client.bot_category not_in search, monitoringTHEN blockKonsolda bu seçimlerle:
- Üç ülkeye izin ver — Alan Ülke · Operatör listede · Değer
TR, DE, FR→ Aksiyon İzin Ver - Kalanını engelle — Alan Ülke · Operatör listede değil · Değer
TR, DE, FR→ Aksiyon Engelle - Doğrulanmış botları engelle — Alan Bilinen Bot · Operatör eşittir · Değer Evet VE Alan Bot Kategorisi · Operatör listede değil · Değer
search, monitoring→ Aksiyon Engelle
Aynı sonuca çok sayıda == koşulunu OR gruplarıyla bağlayarak da ulaşılır, ama in hem okunaklıdır hem de tek koşul harcar. ip.list alanı özel durumdur: yalnızca in / not_in ile çalışır ve değer olarak IP Listelerinde tanımladığınız liste adını alır.
Metin arama: contains ve not_contains
Bölüm başlığı “Metin arama: contains ve not_contains”Verilen değerin, alan içeriğinin herhangi bir yerinde geçip geçmediğine bakar. User-Agent filtreleme, header varlığı kontrolü ve sorgu parametresi yakalamanın temel aracıdır.
# Bilinen saldırı aracını engelleIF http.user_agent contains sqlmapTHEN block
# API anahtarı başlığı olmayan istekleri reddetIF http.header not_contains X-Api-KeyAND http.request.base_uri has_prefix /apiTHEN blockKonsolda bu seçimlerle:
- Saldırı aracını engelle — Alan User Agent · Operatör içerir · Değer
sqlmap→ Aksiyon Engelle - API anahtarı olmayanı reddet — Alan Header · Operatör içermez · Değer
X-Api-KeyVE Alan Path (sorgusuz) · Operatör ile başlar · Değer/api→ Aksiyon Engelle
Önek ve sonek: has_prefix, has_suffix ve olumsuzları
Bölüm başlığı “Önek ve sonek: has_prefix, has_suffix ve olumsuzları”Alanın başını (has_prefix) veya sonunu (has_suffix) hedefler. contains’ten farkı konumdur: /admin önek koşulu /blog/admin-tips path’iyle eşleşmez. Olumsuz biçimleri (has_not_prefix, has_not_suffix) bir bölgeyi kural dışında bırakmak için kullanılır.
# Admin paneline ülke kısıtıIF http.request.base_uri has_prefix /adminAND ip.country != TRTHEN block
# PHP uzantılı istekleri engelle (PHP kullanmayan sitede)IF http.request.base_uri has_suffix .phpTHEN block
# Statik dosyalar hariç her yere hız sınırıIF http.request.base_uri has_not_prefix /staticTHEN ratelimit 100/60sKonsolda bu seçimlerle:
- Admin paneline ülke kısıtı — Alan Path (sorgusuz) · Operatör ile başlar · Değer
/adminVE Alan Ülke · Operatör eşit değildir · DeğerTR→ Aksiyon Engelle - PHP uzantısını engelle — Alan Path (sorgusuz) · Operatör ile biter · Değer
.php→ Aksiyon Engelle - Statik hariç hız sınırı — Alan Path (sorgusuz) · Operatör ile başlamaz · Değer
/static→ Aksiyon Rate Limit (100 istek / 60 sn)
Sayısal karşılaştırma: gt, ge, lt, le
Bölüm başlığı “Sayısal karşılaştırma: gt, ge, lt, le”Sırasıyla büyüktür, büyük eşittir, küçüktür, küçük eşittir. Sayısal alanlarda geçerlidir: bot skoru (0–100), origin yanıt kodu, AS numarası ve TLS sürümü. İki koşulu AND ile bağlayarak aralık tanımlanır.
# Güçlü bot sinyalini engelleIF waf.bot_score ge 80THEN block
# Belirsiz aralığa CAPTCHA (50 ≤ skor < 80)IF waf.bot_score ge 50AND waf.bot_score lt 80THEN captcha
# Tüm 4xx hatalarını otomatik engellemeye sayIF http.response.status ge 400AND http.response.status lt 500THEN failbanKonsolda bu seçimlerle:
- Güçlü bot sinyalini engelle — Alan Bot Skoru (0–100) · Operatör büyük eşittir · Değer
80→ Aksiyon Engelle - Belirsiz aralığa CAPTCHA — Alan Bot Skoru (0–100) · Operatör büyük eşittir · Değer
50VE Operatör küçüktür · Değer80→ Aksiyon CAPTCHA - 4xx hatalarını say — Alan Origin Yanıt Kodu · Operatör büyük eşittir · Değer
400VE Operatör küçüktür · Değer500→ Aksiyon Otomatik Engelleme
Eşik seçerken ge ile gt farkına dikkat edin: ge 80 skoru tam 80 olan isteği kapsar, gt 80 kapsamaz. Motor > >= < <= yazımlarını da bu operatörlerin eşanlamlısı olarak kabul eder.
Hangi alan hangi operatörü destekler?
Bölüm başlığı “Hangi alan hangi operatörü destekler?”Konsol geçersiz kombinasyonlara izin vermez; yine de kural tasarlarken şu eşlemeyi bilmek işinizi hızlandırır:
| Alan tipi | Örnek alanlar | Operatörler |
|---|---|---|
| Metin | http.request.base_uri, http.request.uri, http.host, http.user_agent, http.header, http.cookie, http.referer | Tümü — eşitlik, liste, metin arama, önek/sonek |
| Kod / kategori | ip.country, http.request.method, http.request.version, waf.client.bot_category, waf.client.ip_type | == != in not_in |
| Bot adı | waf.client.bot_name | == != in not_in contains |
| IP | ip.src, ip.prefix | == != in not_in |
| IP listesi | ip.list | Yalnızca in not_in |
| Sayısal + liste | ip.asnum, tls.version | == != in not_in gt ge lt le |
| Bot skoru | waf.bot_score | Yalnızca gt ge lt le |
| Yanıt kodu | http.response.status | == != gt ge lt le |
| Yanıt başlığı | http.response.header | == != contains not_contains |
| On/off | waf.client.bot, waf.client.vpn, waf.client.tor, waf.client.proxy, waf.client.relay | == != |
Her alanın desteklediği operatörlerin tam listesi kendi referans sayfasındadır — Alanlar katalogundan ulaşabilirsiniz.