İçeriğe geç

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:

GrupOperatörlerNe zaman
Eşitlik== !=Değer tek ve kesin: bir ülke, bir metod, bir on/off sinyali
Liste üyeliğiin not_inAynı alan için birden çok kabul/red değeri
Metin aramacontains not_containsDeğerin alanın herhangi bir yerinde geçmesi yeterli
Önek / sonekhas_prefix has_suffix has_not_prefix has_not_suffixPath ve URI’nin başı/sonu — dizin ve uzantı hedefleme
Sayısal karşılaştırmagt ge lt leSkor 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).

Konsolda sütunu konsol menüsündeki etikettir; Operatör sütunu Kural Önizleme’de görünen teknik addır.

KonsoldaOperatörÖrnek
eşittir==ip.country == TR
eşit değildir!=http.request.method != GET
listedeinip.country in TR, DE, FR
listede değilnot_inip.country not_in RU, CN
içerircontainshttp.user_agent contains bot
içermeznot_containshttp.host not_contains staging
ile başlarhas_prefixhttp.request.base_uri has_prefix /api
ile biterhas_suffixhttp.request.base_uri has_suffix .php
ile başlamazhas_not_prefixhttp.request.base_uri has_not_prefix /static
ile bitmezhas_not_suffixhttp.request.base_uri has_not_suffix .js
büyüktürgtwaf.bot_score gt 80
büyük eşittirgewaf.bot_score ge 60
küçüktürltwaf.bot_score lt 20
küçük eşittirlewaf.bot_score le 40

En temel operatörler: alan, verilen değerle tam olarak eşleşiyor mu (==) ya da eşleşmiyor mu (!=)?

# Tek ülkeyi engelle
IF ip.country == RU
THEN block
# GET dışındaki tüm metodları sıkılaştır
IF http.request.method != GET
AND http.request.base_uri has_prefix /api
THEN ratelimit 30/60s
# Tor çıkış düğümlerine CAPTCHA
IF waf.client.tor == on
THEN captcha

Konsolda 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 GET VE 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.

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, FR
THEN allow
IF ip.country not_in TR, DE, FR
THEN block
# Arama ve izleme botları dışındaki doğrulanmış botları engelle
IF waf.client.bot == on
AND waf.client.bot_category not_in search, monitoring
THEN block

Konsolda 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.

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ı engelle
IF http.user_agent contains sqlmap
THEN block
# API anahtarı başlığı olmayan istekleri reddet
IF http.header not_contains X-Api-Key
AND http.request.base_uri has_prefix /api
THEN block

Konsolda 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-Key VE 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 /admin
AND ip.country != TR
THEN block
# PHP uzantılı istekleri engelle (PHP kullanmayan sitede)
IF http.request.base_uri has_suffix .php
THEN block
# Statik dosyalar hariç her yere hız sınırı
IF http.request.base_uri has_not_prefix /static
THEN ratelimit 100/60s

Konsolda bu seçimlerle:

  • Admin paneline ülke kısıtı — Alan Path (sorgusuz) · Operatör ile başlar · Değer /admin VE Alan Ülke · Operatör eşit değildir · Değer TR → 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)

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 engelle
IF waf.bot_score ge 80
THEN block
# Belirsiz aralığa CAPTCHA (50 ≤ skor < 80)
IF waf.bot_score ge 50
AND waf.bot_score lt 80
THEN captcha
# Tüm 4xx hatalarını otomatik engellemeye say
IF http.response.status ge 400
AND http.response.status lt 500
THEN failban

Konsolda 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 50 VE Operatör küçüktür · Değer 80 → Aksiyon CAPTCHA
  • 4xx hatalarını say — Alan Origin Yanıt Kodu · Operatör büyük eşittir · Değer 400 VE Operatör küçüktür · Değer 500 → 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.


Konsol geçersiz kombinasyonlara izin vermez; yine de kural tasarlarken şu eşlemeyi bilmek işinizi hızlandırır:

Alan tipiÖrnek alanlarOperatörler
Metinhttp.request.base_uri, http.request.uri, http.host, http.user_agent, http.header, http.cookie, http.refererTümü — eşitlik, liste, metin arama, önek/sonek
Kod / kategoriip.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
IPip.src, ip.prefix== != in not_in
IP listesiip.listYalnızca in not_in
Sayısal + listeip.asnum, tls.version== != in not_in gt ge lt le
Bot skoruwaf.bot_scoreYalnızca gt ge lt le
Yanıt koduhttp.response.status== != gt ge lt le
Yanıt başlığıhttp.response.header== != contains not_contains
On/offwaf.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.