Query Parameter
Query Parameter Koşulu Nedir?
Query Parameter koşulu, HTTP isteğinin URL'sindeki belirli bir query string parametresinin varlığını veya değerini kontrol ederek trafik yönlendirme ve manipülasyon kararları almak için kullanılan bir koşul tipidir.
Query parametreleri, URL'de ? işaretinden sonra gelen anahtar-değer (key-value) çiftleridir.
Bu koşul, belirli bir parametrenin varlığını veya değerini kontrol etmek için kullanılır.
Query Parameter Koşulunun Önemi
Modern web uygulamalarında query parametreleri, arama sorguları, sayfalama, filtreleme ve durum bilgisi taşımak için yaygın olarak kullanılır.
Query Parameter koşulu sayesinde;
- Belirli parametrelerin varlığı kontrol edilebilir,
- Parametre değerlerine göre farklı aksiyonlar uygulanabilir,
- Debug/test parametreleri tespit edilip engellenebilir,
- API versiyonlama parametreleri yönetilebilir,
- Önbellek stratejileri parametre bazlı oluşturulabilir.
Path + Query vs Query Parameter Farkı:
| Kriter | Yaklaşım | Örnek |
|---|---|---|
| Query Parameter | Parametreye odaklı | Parametre q = test |
| Path + Query | Tam string eşleştirme | /search?q=test |
Kullanılabildiği vService Tipleri
Koşul, hem istek (At Request) hem yanıt (At Response) aşamasında kullanılabilir; parametre değeri istek anında tespit edilir.
Nasıl Eklenir?
Yeni bir Query Parameter Koşulu, TR7 web yönetim arayüzü üzerinden aşağıdaki adımlar izlenerek eklenebilir:
- Sol altta bulunan TR7 logosuna tıklanarak Configuration Menu açılır.
- Load Balancer → Conditions → Add adımları takip edilir.
- Criteria olarak Query Parameter seçilir.
- Koşula ait ilgili konfigürasyonlar yapılandırılır.
Addbutonuna tıklanarak koşul eklenir.
Query Parameter Koşulu Ekleme Formu
Query Parameter Koşulu Ekleme Formu
INFO
Condition Name
Oluşturulacak koşul için isteğe bağlı bir isim girilebilir.
Bu alan, özellikle aşağıdaki senaryolarda önemlidir:
- Aynı vService altında çok sayıda koşul tanımlandığında,
- Benzer kriterlere sahip koşulların ayırt edilmesi gerektiğinde,
- Koşulun hangi iş kuralını temsil ettiğinin hızlıca anlaşılması istendiğinde.
Bu alan boş bırakıldığında, TR7 ilgili koşulun içeriğini analiz ederek Condition Description alanında otomatik ve açıklayıcı bir isim oluşturur. Oluşturulan bu açıklama, koşul listelerinde isim olarak kullanılır.
INFO
Criteria Zorunlu
Koşulun tipini belirleyen alandır; aranabilir açılır listeden Query Parameter seçilir. Bu seçim, formda görüntülenecek alanları belirler. Kriter, koşul kaydedildikten sonra değiştirilemez: farklı bir kritere ihtiyaç duyulursa yeni bir koşul tanımlanır. Listedeki tüm kriterler ve kapsamları için Conditions sayfasındaki kriter kataloğuna bakılabilir.
INFO
Query Parameter Zorunlu
Kontrol edilecek query parametresinin adı yani key bu alana girilir.
Örnekler:
| URL | Parametre Adı |
|---|---|
/search?q=test | q |
/users?page=2&limit=10 | page ve limit |
/api?version=v2 | version |
INFO
Content Matching Method Varsayılan: Exact match
İçeriğin nasıl eşleştirileceğini belirler. Alan, formda etiketsiz bir açılır liste olarak Criteria'nın hemen altında görünür ve Exact match seçili açılır.
| Seçenek | Açıklama |
|---|---|
| Exact match | Değer birebir eşleşmelidir. |
| Start | Değer belirtilen metinle başlamalıdır. |
| End | Değer belirtilen metinle bitmelidir. |
| Includes | Değer belirtilen metni içermelidir. |
| Regex | Değer düzenli ifadeyle eşleşmelidir. |
| Is present | Yalnızca varlık kontrolü sağlanır. (değer önemli değil) |
TIP
Is present seçildiğinde, parametrenin değerinden bağımsız olarak istekte var olup olmadığı kontrol edilir (ör. ?debug=true içeren istekler). Bu seçimde Query ve Case Insensitive alanları gizlenir.
INFO
Case Insensitive Varsayılan: Kapalı
Büyük/küçük harf duyarlılığını kontrol eder ve yalnızca Query alanındaki değere uygulanır; parametre adı her zaman büyük/küçük harfe duyarlıdır (Page ile page farklı parametrelerdir).
- Aktif:
example,EXAMPLE,Exampleaynı kabul edilir - Aktif Değil: Tam eşleşme gerekir (varsayılan)
INFO
Query Zorunlu
Kontrol edilecek query parametresinin değeri (value) bu alana girilir. Değer, istemciden geldiği ham (kodlanmış) haliyle karşılaştırılır: %20, %3D gibi kodlamalar çözülmez; kodlanmış varyantları da kapsamak için Regex kullanılabilir. Aynı ada sahip birden fazla parametre gönderilirse (?a=1&a=2) koşul tek bir değeri değerlendirir; iki değerle birden eşleşme kurulamaz. Seçilen eşleştirme yöntemine göre:
- Exact match: Değerin birebir karşılığını kontrol eder.
- Start: Aranacak metin parçasının başlangıcını kontrol eder.
- End: Aranacak metin parçasının bitişini kontrol eder.
- Includes: Aranacak metin parçasının içinde geçme durumunu kontrol eder.
- Regex: Düzenli ifade deseni (Regex) ile kontrol eder.
Is present seçildiğinde bu alan gizlenir.
INFO
Condition Description
Girilen kriter ve değerler doğrultusunda TR7 tarafından otomatik olarak oluşturulur.
Bu açıklama;
- Koşulun hangi değer için geçerli olduğunu,
- Hangi kriter üzerinden çalıştığını,
- Listeleme ekranlarında koşulun hızlıca anlaşılmasını
sağlayacak şekilde sistem tarafından dinamik olarak üretilir.
TIP
Parametrenin değeri, aksiyonlarda İstek parametresi akıllı değişkeniyle, parametre adı verilerek kullanılabilir (ör. bir HTTP başlığının veya log alanının değeri olarak).
INFO
Form Butonları
Add
Add butonuna tıklanarak koşul ekleme işlemi tamamlanır.
Add & Repeat
Add & Repeat butonu ile koşul ekleme işlemi tamamlanır ve farklı konfigürasyonlarla ilgili pencereden çıkılmadan yeni bir koşul daha eklenebilir.
Koşul Eklendi
Operasyonel Kullanım Önerileri
- Varlık Kontrolü için Is Present Kullanın. Parametrenin değerinden bağımsız olarak varlığını kontrol etmek için Is Present yöntemini kullanın.
- URL Encoding'e Dikkat Edin. Query parametreleri URL encode edilmiş olabilir. Özel karakterler için bunu göz önünde bulundurun.
- Güvenlik Parametrelerini İzleyin.
debug,test,admingibi parametreleri production ortamında engelleyin veya izleyin.
Canlı Ortamlarda Yaygın Kullanım Senaryoları
Aşağıdaki örnekler, ilgili koşulun gerçek sistemlerde en sık karşılaşılan kullanım senaryolarında nasıl uygulandığını göstermektedir. Bu senaryolar, canlı ortamlarda yaygın olarak tercih edilen ve sahada edinilmiş deneyimlere dayanan pratikleri temel alır.
Senaryo 1: Debug Parametresi Engelleme
Kullanım Amacı: Üretim ortamında debug/test parametrelerini tespit edip engellemek ve güvenlik açıklarını önlemek.
Konfigürasyon: Query parameter → debug · Content Matching Method → Is present
Aksiyon Önerileri:
- ✅ Block → Debug parametreli istekler 403 Forbidden ile engellenir, production ortamında debug modu devre dışı bırakılır.
- ✅ Show Content → "Debug mode not allowed in production" uyarı sayfası gösterilir, kullanıcı bilgilendirilir.
Senaryo 2: API Versiyon Yönlendirme
Kullanım Amacı: API versiyon parametresine göre Kurum Servisine yönlendirme yapmak ve backward compatibility sağlamak.
Konfigürasyon: Query parameter → api_version · Content Matching Method → Exact match · Case insensitive → işaretli · Query → v2
Aksiyon Önerileri:
- ✅ Add HTTP Header →
X-API-Version: v2header eklenir, Kurum Servisi versiyona göre yanıt verir. - ✅ Set Path → Path'e
/v2prefix eklenir, versiyon bazlı routing yapılır.
Senaryo 3: Sayfalama Güvenliği ve Scraping Önleme
Kullanım Amacı: Anormal sayfa numaralarını tespit edip web scraping ve otomatik tarama saldırılarını engellemek.
Konfigürasyon: Query parameter → page · Content Matching Method → Regex · Query → ^[0-9]{4,}$
Aksiyon Önerileri:
- ✅ Quarantine → 1000 ve üzeri (4+ haneli) sayfa istekleri tespit edilir, 10 deneme sonrası IP 30 dakika karantinaya alınır.
- ✅ Bandwidth Limitation → Şüpheli sayfalama davranışı gösteren IP'ler için bant genişliği 800 Kbps ile sınırlandırılır.
- ✅ Manage HTTP Security Headers →
X-Scraping-Detected: trueheader eklenir, Kurum Servisi ek güvenlik önlemleri alır.
Senaryo 4: Admin Parametresi Koruması
Kullanım Amacı: Gizli admin/test parametrelerini tespit edip yetkisiz erişim denemelerini engellemek ve izlemek.
Konfigürasyon: Query parameter → admin · Content Matching Method → Is present
Aksiyon Önerileri:
- ✅ Quarantine → Yetkisiz admin parametresi denemeleri tespit edilir, 3 başarısız deneme sonrası IP 60 dakika engellenir.
Senaryo 5: UTM Kampanya Tracking
Kullanım Amacı: Marketing kampanya parametrelerini tespit edip analitik bilgileri Kurum Servisine iletmek ve metrikleri toplamak.
Konfigürasyon: Query parameter → utm_campaign · Content Matching Method → Is present
Aksiyon Önerileri:
- ✅ Add HTTP Header →
X-UTM-Campaign: detectedveX-Marketing-Source: utmheader'ları eklenir, Kurum Servisi kampanya verilerini işler. - ✅ Set Path + Query → Kampanya parametreleri temizlenmiş path ve query string oluşturulur, clean URL'ler kullanılır.
Senaryo 6: Search Query XSS Koruması
Kullanım Amacı: Arama parametrelerinde XSS ve injection pattern'lerini tespit edip saldırıları engellemek.
Konfigürasyon: Query parameter → q · Content Matching Method → Includes · Case insensitive → işaretli · Query → <script
Aksiyon Önerileri:
- ✅ Block → XSS pattern içeren arama sorguları 400 Bad Request ile engellenir, saldırı durdurulur.
- ✅ URL Normalization → Zararlı karakterler encode edilir veya temizlenir, güvenli query string oluşturulur.
- ✅ Quarantine → XSS denemesi yapan IP'ler tespit edilir, 5 deneme sonrası 120 dakika karantinaya alınır.
