Query
Query Nedir?
Query, isteğin sorgu (query string) bölümüne uygulanan denetimleri gösterir. Sekme iki katmandan oluşur: üstte tüm sorgu parametrelerine uygulanan ortak kural (common rule), altta belirli parametrelere özel kuralların listelendiği değişken tablosu (argument rules).
Query String Nedir?
Sorgu, istek URL'sinde ? işaretinden sonra gelen bölümdür; ad=değer biçimindeki parametrelerin & ile birleşiminden oluşur. Denetimler sorgunun ham (URL-kodlu) metni üzerinde çalışır (örneğin a%20b adının uzunluğu 5 sayılır) ve parametre adları büyük/küçük harfe duyarlı eşleştirilir. Bu sekmedeki denetimlerin her biri, sorgunun belirli bir öğesini hedefler:
Örnek istek: /api/v1/login?user=john&otp=1234&lang=en-US
| Öğe | Örnekteki karşılığı | İlgili denetimler |
|---|---|---|
| Parametre adı (anahtar) | user, otp, lang | Query Key Length, Allowed / Required Query Parameters |
| Parametre değeri | john, 1234, en-US | Query Value Length, Query Value Pattern, OWASP Check |
| Parametre sayısı | 3 | Query Key Count |
| Sorgu bölümünün tamamı | user=john&otp=1234&lang=en-US (29 karakter) | Total Query Size |
| Aynı parametrenin tekrarı | ?id=100&id=200 isteğinde id 2 kez geçer | Query Value Count |
Ekrana Erişim
- Page Types listesinde kurala tıklanır; kuralın detay paneli sağda açılır.
- Panelin sekme şeridinden Query sekmesine tıklanır.
Panelin başlık öğeleri ve sekme şeridinin davranışı için bkz. Path. Tablodaki değer gösterimleri de Path sekmesindekiyle aynı biçimi kullanır: kısıt yoksa No Restriction, tek yönlü kısıtlar ≤ n / ≥ n, aralıklar [a - b], açık/kapalı alanlar ✓ / - olarak görünür.
Detay Paneli - Query Sekmesi
Devralma ve Rule Source
Kural kendi Query denetimini tanımlamamışsa değerler, kural eşleşme önceliğine göre path'e uyan glob kuraldan veya Any Paths kuralından devralınır; tablonun sonundaki Rule Source satırı, denetimlerin geldiği kuralın path'ini gösterir (örneğin Any Paths). Ekran görüntüsündeki örnekte değerler, Any Paths kuralının varsayılan yapılandırmasından gelmektedir. Kural kendi Query denetimini tanımlıyorsa Rule Source satırı bulunmaz.
Add Common Rule for Query Ekranı
Tablonun üzerindeki yeşil artı ikonlu Add common rule for Query butonuna tıklandığında, kurala kendi Query ortak denetimini tanımlayan form açılır; kayıtla birlikte devralma o kural için sona erer. Kural kendi Query denetimine zaten sahipse aynı buton, kalem ikonlu Edit common rule for Query (formu mevcut değerlerle açar) ve Delete common rule for Query (ortak kuralı onay sorusu sormadan kaldırır) olarak görünür. Ekleme formu boş açılmaz; Any Paths kuralının ilgili denetim değerleriyle önceden doldurulmuş gelir. Any Paths kuralının kendisinde ise silme butonu bulunmaz: catch-all kuralın ortak denetimi kaldırılamaz.
Bu ekran aynı zamanda düzenleme ekranıdır: ortak denetim ister elle eklenmiş ister öğrenmeyle oluşturulmuş olsun, Edit common rule for Query butonuyla açılan form aşağıdaki alanların aynısını kuralın mevcut değerleriyle gösterir.
Add Common Rule for Query Ekranı
INFO
Virtual Host Group
Denetimin ekleneceği host grubu salt-okunur olarak gösterilir; panelin hangi grubun Page Types ekranından açıldığına göre belirlenir ve formdan değiştirilemez.
INFO
Path
Denetimin ekleneceği kuralın path'i gösterilir; form, detay paneli hangi kural için açıldıysa o kurala bağlıdır.
INFO
Area
Denetimin isteğin hangi bölümüne uygulandığını gösterir. Alan, formun açıldığı sekmeye kilitlidir: form Query sekmesinden açıldığında Query olarak gelir ve değiştirilemez.
INFO
Argument Name
Denetimin kapsamını gösterir. Ortak kural formunda bu alan Any Arguments olarak kilitlidir ve alanlar tüm sorgu parametrelerine uygulanır; belirli bir parametreye özel kural ise Add Argument Rule for Query ekranından tanımlanır.
Bir parametrenin kendi değişken kuralı varsa, o parametrenin değer denetimleri (Query Value Length, Query Value Pattern, Query Value Count, OWASP Check, Detailed Log) tümüyle bu kuraldan alınır; ortak kuralın değer denetimleri o parametreye artık uygulanmaz. Bölüm geneli denetimler (Query Key Length, Query Key Count, Total Query Size, Allowed / Required Query Parameters) ise uygulanmaya devam eder. Bir ada özel kural tanımlamak, o adı Allowed Query Parameters listesine kendiliğinden eklemez.
INFO
Query Key Length
Tek bir sorgu parametresinin adının (anahtarının) uzunluk kısıtı tanımlanır; uzunluk, adın ham (URL-kodlu) hali üzerinden ölçülür ve tekrarlı parametrelerde ad bir kez değerlendirilir:
| Seçenek | Anlamı |
|---|---|
| No Restriction | Uzunluk kısıtı uygulanmaz. |
| Less Than or Equal To | Uzunluk, girilen değere eşit veya altında olmalıdır. |
| Equals To | Uzunluk, girilen değere eşit olmalıdır. |
| Greater Than or Equal To | Uzunluk, girilen değere eşit veya üstünde olmalıdır. |
| Range | Uzunluk, girilen iki değer arasında (sınırlar dahil) olmalıdır. |
Değer alanına yalnızca sayı girilebilir. Kısıta uymayan her parametre adı, Structure Limits kategorisinde Query Key Length ihlali olarak puanlanır ve saldırı kaydına düşer.
INFO
Query Key Count
İstekteki sorgu parametresi sayısının kısıtı tanımlanır. Sayım farklı parametre adı üzerinden yapılır; aynı adın tekrarları tek sayılır (örneğin id=100&id=200 tek parametredir):
| Seçenek | Anlamı |
|---|---|
| No Restriction | Sayı kısıtı uygulanmaz. |
| Less Than or Equal To | Parametre sayısı, girilen değere eşit veya altında olmalıdır. |
| Equals To | Parametre sayısı, girilen değere eşit olmalıdır. |
| Greater Than or Equal To | Parametre sayısı, girilen değere eşit veya üstünde olmalıdır. |
| Range | Parametre sayısı, girilen iki değer arasında (sınırlar dahil) olmalıdır. |
Değer alanına yalnızca sayı girilebilir. Kısıta uymayan istek, Structure Limits kategorisinde Query Key Count ihlali olarak puanlanır ve saldırı kaydına düşer.
INFO
Total Query Size
Sorgu bölümünün toplam boyut kısıtı tanımlanır. Boyut, ? işareti hariç olmak üzere ham sorgu metninin tamamı üzerinden ölçülür; parametre adları, değerleri, & ve = ayraçları ile tekrarlı parametreler dahildir:
| Seçenek | Anlamı |
|---|---|
| No Restriction | Boyut kısıtı uygulanmaz. |
| Less Than or Equal To | Toplam boyut, girilen değere eşit veya altında olmalıdır. |
| Equals To | Toplam boyut, girilen değere eşit olmalıdır. |
| Greater Than or Equal To | Toplam boyut, girilen değere eşit veya üstünde olmalıdır. |
| Range | Toplam boyut, girilen iki değer arasında (sınırlar dahil) olmalıdır. |
Değer alanına yalnızca sayı girilebilir. Kısıta uymayan istek, Structure Limits kategorisinde Total Query Size ihlali olarak puanlanır ve saldırı kaydına düşer.
INFO
Allowed Query Parameters
İzin verilen parametre adlarının listesi tanımlanır (pozitif liste). Alan, No Restriction konumundayken tüm parametre adlarına izin verilir; kısıt açıldığında adlar listeye tek tek eklenir. Eşleştirme, parametre adının ham haliyle birebir ve büyük/küçük harfe duyarlı yapılır; listede olmayan her farklı ad, Structure Policies kategorisinde Allowed Query Parameters ihlali olarak puanlanır ve saldırı kaydına düşer. Bir parametreye özel değişken kuralı tanımlamak, o adı bu listeye kendiliğinden eklemez.
INFO
Required Query Parameters
İstekte bulunması zorunlu parametre adlarının listesi tanımlanır. Alan, No Restriction konumundayken zorunluluk uygulanmaz; kısıt açıldığında listedeki adlardan eksik olan her biri, Structure Policies kategorisinde Required Query Parameters ihlali olarak ayrı ayrı puanlanır. Adın istekte bulunması yeterlidir; değeri boş olabilir. Sorgu bölümü hiç olmayan istekler de denetlenir ve zorunlu parametreleri eksik sayılır.
INFO
Query Value Length
Parametre değerlerinin uzunluk kısıtı tanımlanır. Kısıt, parametrenin her değerine ayrı ayrı, ham (URL-kodlu) uzunluk üzerinden uygulanır; çok değerli parametrede yalnızca kısıtı aşan değerler ihlal üretir:
| Seçenek | Anlamı |
|---|---|
| No Restriction | Uzunluk kısıtı uygulanmaz. |
| Less Than or Equal To | Değer uzunluğu, girilen değere eşit veya altında olmalıdır. |
| Equals To | Değer uzunluğu, girilen değere eşit olmalıdır. |
| Greater Than or Equal To | Değer uzunluğu, girilen değere eşit veya üstünde olmalıdır. |
| Range | Değer uzunluğu, girilen iki değer arasında (sınırlar dahil) olmalıdır. |
Değer alanına yalnızca sayı girilebilir. Kısıtı aşan her değer, Structure Limits kategorisinde Query Value Length ihlali olarak puanlanır ve saldırı kaydına düşer.
INFO
OWASP Check Varsayılan: İşaretli
İşaretlendiğinde her parametrenin adı ve her değeri ayrı ayrı OWASP imza taramasına tabi tutulur; Query için varsayılan olarak işaretlidir. İçerik hem ham haliyle hem de bir kez URL-çözümlenmiş haliyle taranır; böylece kodlanarak gizlenen saldırı kalıpları da yakalanır. İmza isabetleri, yapısal ihlallerden farklı olarak kendi puanlarıyla saldırı puanına birikerek katılır. Taramada vService'in OWASP Rules ekranında etkin olan imza seti kullanılır; imzaların dökümü için bkz. Signature & Rule Library.
OWASP Exclusions
Kutu işaretlendiğinde formda beliren bu alanla, taramadan hariç tutulacak OWASP kuralları çoklu seçimle belirlenir; kutu işaretli değilken alan görünmez, seçim yapılmadığında alanda Nothing chosen yazar. İstisna tanımlandığında, detay panelindeki OWASP Check satırında ✓ işaretinin yanında istisna sayısı gösterilir.
INFO
Detailed Log Varsayılan: İşaretli
İmza (OWASP) isabetlerinin günlük ayrıntısını yönetir; varsayılan olarak işaretlidir. Açıkken Event Logs kaydında eşleşen içerik, çevresindeki bağlamla birlikte gösterilir; kapalıyken kayıt yine düşer ancak içerik yerine Detailed log disabled ibaresi görünür. Yapısal ihlallerin özet bilgisi (örneğin 2000>1024 karşılaştırması veya ihlal eden parametre adı) bu ayardan bağımsız olarak her zaman yazılır.
INFO
Query Value Pattern
Parametre değerlerinin uyması gereken düzenli ifade (regex) deseni tanımlanır. Denetim pozitiftir: değer desene uymadığında, Structure Policies kategorisinde Query Value Pattern ihlali üretilir ve saldırı kaydında değerin kendisi görünür. Desen, değerin herhangi bir yerinde aranır; değerin tamamının eşleşmesi isteniyorsa desen ^ ve $ ile sınırlandırılmalıdır. Alanın yanındaki aA butonuyla eşleştirme büyük/küçük harf duyarsız yapılabilir; bu seçenek detay panelinde desenin yanında (-i) eki olarak görünür. Desen tanımlanmazsa değer içeriğine desen denetimi uygulanmaz.
INFO
Query Value Count
Aynı parametre adının bir istekte en fazla kaç kez tekrarlanabileceği tanımlanır; alana yalnızca tam sayı girilebilir. Örneğin id=100&id=200 isteğinde id iki kez geçer; sınır aşıldığında Structure Limits kategorisinde Query Value Count ihlali üretilir. Boş bırakılırsa tekrar kısıtı uygulanmaz; 0 girilirse parametrenin her kullanımı ihlal sayılır.
INFO
Add
Add butonuna tıklanarak ortak kural ekleme işlemi tamamlanır; buton, formda hata kalmadığında etkinleşir. Ek bir onay penceresi veya dağıtım (deploy) adımı yoktur; WAF yapılandırması otomatik olarak yeniden üretilip uygulanır ve paneldeki değerler anında güncellenir.
Mod davranışı ve puanlama
Bu sekmedeki yapı denetimleri yalnızca Blocking ve Monitor modlarında çalışır; Learning modunda çalıştırılmaz, bunun yerine gözlenen trafikten kısıt önerileri öğrenilir. Yapısal ihlaller yüksek puanlıdır; varsayılan engelleme eşiğinde tek bir ihlal, Blocking modunda isteğin engellenmesi için yeterlidir (Monitor modunda saldırı olarak raporlanır ancak istek geçirilir). OWASP imza isabetleri ise kendi puanlarıyla birikerek eşiğe ulaşır.
Add Argument Rule for Query Ekranı
Ortak kuralın altındaki Argument tablosu, belirli sorgu parametrelerine özel değişken kurallarını listeler; tablonun arama kutusuyla ad üzerinden filtreleme yapılabilir. Kuralın kendi tanımladığı değişken kuralları kalın, devralınanlar italik gösterilir. Tablonun üzerindeki yeşil artı ikonlu Add argument rule for Query butonuna tıklandığında, tek bir parametreye özel denetim tanımlayan form açılır.
Tablodaki bir satıra tıklandığında altında değişken kuralının detayı açılır; kuralın kendi değişken kuralında kalem ikonlu Edit (formu mevcut değerlerle açar) ve çöp kutusu ikonlu Delete (değişken kuralını onay sorusu sormadan kaldırır) butonları görünür. Devralınan satırlarda bu butonlar bulunmaz; devralınan kural yalnızca kaynağı olan kuraldan düzenlenebilir.
Path'e özel kurallarda ekleme formu boş açılmaz; denetim alanları Any Paths kuralının ortak Query denetim değerleriyle önceden doldurulmuş gelir. Any Paths kuralının kendisinde ise form, alan varsayılanlarıyla açılır. Bu ekran aynı zamanda düzenleme ekranıdır: Edit butonuyla açılan form aşağıdaki alanların aynısını kuralın mevcut değerleriyle gösterir; düzenlemede, ekleme formundan farklı olarak Argument Name alanı da kilitlenir; kuralın hangi parametreye bağlı olduğu sonradan değiştirilemez.
Add Argument Rule for Query Ekranı
INFO
Virtual Host Group
Denetimin ekleneceği host grubu salt-okunur olarak gösterilir; panelin hangi grubun Page Types ekranından açıldığına göre belirlenir ve formdan değiştirilemez.
INFO
Path
Denetimin ekleneceği kuralın path'i gösterilir; form, detay paneli hangi kural için açıldıysa o kurala bağlıdır.
INFO
Area
Denetimin isteğin hangi bölümüne uygulandığını gösterir. Alan, formun açıldığı sekmeye kilitlidir: form Query sekmesinden açıldığında Query olarak gelir ve değiştirilemez.
INFO
Argument Name
Kuralın bağlanacağı parametrenin adı tanımlanır. Kapsam seçici bu formda One Argument olarak kilitlidir; ad, yanındaki metin kutusuna girilir ve boş bırakılamaz (boş bırakılırsa Enter argument name hatası görünür). Ad, istekteki parametre adıyla ham (URL-kodlu) haliyle birebir ve büyük/küçük harfe duyarlı eşleştirilir; boşluk içeren bir ad a%20b gibi kodlanmış haliyle girilmelidir.
Aynı ada sahip ikinci bir değişken kuralı eklenemez; denemede part collision hatası döner. Düzenleme formunda bu alan değiştirilemez; kural başka bir parametreye taşınmak isteniyorsa silinip yeniden eklenmelidir.
INFO
Query Value Length
Parametre değerlerinin uzunluk kısıtı tanımlanır. Kısıt, parametrenin her değerine ayrı ayrı, ham (URL-kodlu) uzunluk üzerinden uygulanır; çok değerli parametrede yalnızca kısıtı aşan değerler ihlal üretir:
| Seçenek | Anlamı |
|---|---|
| No Restriction | Uzunluk kısıtı uygulanmaz. |
| Less Than or Equal To | Değer uzunluğu, girilen değere eşit veya altında olmalıdır. |
| Equals To | Değer uzunluğu, girilen değere eşit olmalıdır. |
| Greater Than or Equal To | Değer uzunluğu, girilen değere eşit veya üstünde olmalıdır. |
| Range | Değer uzunluğu, girilen iki değer arasında (sınırlar dahil) olmalıdır. |
Değer alanına yalnızca sayı girilebilir. Kısıtı aşan her değer, Structure Limits kategorisinde Query Value Length ihlali olarak puanlanır ve saldırı kaydına düşer.
INFO
OWASP Check Varsayılan: İşaretli
İşaretlendiğinde parametrenin adı ve her değeri ayrı ayrı OWASP imza taramasına tabi tutulur; varsayılan olarak işaretlidir. İçerik hem ham haliyle hem de bir kez URL-çözümlenmiş haliyle taranır; böylece kodlanarak gizlenen saldırı kalıpları da yakalanır. Kutu kaldırıldığında parametre, adı ve tüm değerleriyle birlikte imza taramasından tümüyle çıkar; sık yanlış pozitif üreten bir parametreyi taramadan muaf tutmanın yolu budur. Taramada vService'in OWASP Rules ekranında etkin olan imza seti kullanılır; imzaların dökümü için bkz. Signature & Rule Library.
OWASP Exclusions
Kutu işaretlendiğinde formda beliren bu alanla, taramadan hariç tutulacak OWASP kuralları çoklu seçimle belirlenir; kutu işaretli değilken alan görünmez, seçim yapılmadığında alanda Nothing chosen yazar. İstisnalar yalnızca bu parametrenin taramasına uygulanır; diğer parametreler ortak kuralın istisna listesini kullanmaya devam eder.
INFO
Detailed Log Varsayılan: İşaretli
İmza (OWASP) isabetlerinin günlük ayrıntısını yönetir; varsayılan olarak işaretlidir. Açıkken Event Logs kaydında eşleşen içerik, çevresindeki bağlamla birlikte gösterilir; kapalıyken kayıt yine düşer ancak içerik yerine Detailed log disabled ibaresi görünür. Yapısal ihlallerin özet bilgisi (örneğin 2000>1024 karşılaştırması veya ihlal eden parametre adı) bu ayardan bağımsız olarak her zaman yazılır.
INFO
Query Value Pattern
Parametre değerlerinin uyması gereken düzenli ifade (regex) deseni tanımlanır. Denetim pozitiftir: değer desene uymadığında, Structure Policies kategorisinde Query Value Pattern ihlali üretilir ve saldırı kaydında değerin kendisi görünür. Desen, değerin herhangi bir yerinde aranır; değerin tamamının eşleşmesi isteniyorsa desen ^ ve $ ile sınırlandırılmalıdır. Alanın yanındaki aA butonuyla eşleştirme büyük/küçük harf duyarsız yapılabilir; bu seçenek detay panelinde desenin yanında (-i) eki olarak görünür. Desen tanımlanmazsa değer içeriğine desen denetimi uygulanmaz.
INFO
Query Value Count
Parametre adının bir istekte en fazla kaç kez tekrarlanabileceği tanımlanır; alana yalnızca tam sayı girilebilir. Örneğin id=100&id=200 isteğinde id iki kez geçer; sınır aşıldığında Structure Limits kategorisinde Query Value Count ihlali üretilir. Boş bırakılırsa tekrar kısıtı uygulanmaz; 0 girilirse parametrenin her kullanımı ihlal sayılır.
INFO
Add
Add butonuna tıklanarak değişken kuralı ekleme işlemi tamamlanır; buton, formda hata kalmadığında etkinleşir. Ek bir onay penceresi veya dağıtım (deploy) adımı yoktur; WAF yapılandırması otomatik olarak yeniden üretilip uygulanır ve tablodaki değerler anında güncellenir.
Boş alan, ortak kuraldan devralma anlamına gelmez
Değişken kuralı kaydedildiğinde, parametrenin değer denetimleri tümüyle bu kuraldan alınır; ortak kuralın değer denetimleri o parametreye artık uygulanmaz. Formdaki ön-dolum yalnızca bir başlangıç kolaylığıdır: kayıttan sonra alanlar ortak kuraldan bağımsızdır ve boş bırakılan bir alan (örneğin Query Value Count) ortak kuraldaki değere geri dönmez, o denetim için kısıt yok anlamına gelir. Bölüm geneli denetimler (Query Key Length, Query Key Count, Total Query Size, Allowed / Required Query Parameters) ise değişken kuralından etkilenmez ve uygulanmaya devam eder.
Devralma ve öğrenme
Değişken kuralları da kural eşleşme önceliğine göre devralınır: kural, bir parametre için kendi değişken kuralını tanımlamamışsa path'e uyan glob kuralın veya Any Paths kuralının aynı ada sahip değişken kuralı geçerli olur. Devralınan kurallar tabloda italik listelenir; detayında Rule Source satırı, kuralın geldiği path'i gösterir. Kural aynı ad için kendi değişken kuralını tanımladığında devralınan kural o kural için geçersiz kalır.
Öğrenme (Conditional Learning, AI Learning, Teacher ve Event Logs üzerinden öğretme), parametreye özel bir değişken kuralı varsa güncellemeleri o kurala işler (örneğin OWASP Exclusions listesine istisna ekler veya limitleri genişletir); elle eklenmiş kurallar da bu kapsamdadır. Öğrenme kendiliğinden yeni değişken kuralı oluşturmaz; parametreye özel kural yoksa değişiklik ortak kurala işlenir.
