Path + Query
Path + Query Koşulu Nedir?
Path + Query koşulu, HTTP isteğinin URL'sindeki hem path (yol) hem de query string bölümünü birlikte değerlendirerek trafik yönlendirme ve manipülasyon kararları almak için kullanılan bir koşul tipidir.
Path + Query, URL'nin domain'den sonraki tüm bölümünü kapsar.
Bu koşul, path ve query string'i ayrı ayrı değerlendirmek yerine birlikte ele almak gerektiğinde kullanılır.
URL Yapısı
Full URL Yapısı
| Bileşen | Açıklama |
|---|---|
| Scheme | Kullanılan protokolü ifade eder (http/https). |
| Domain Name | İsteğin gönderildiği sunucu adresini belirtir. |
| Port | Sunucunun dinlediği servis portunu tanımlar. |
| Path to the File | Sunucu üzerindeki erişilecek kaynak yolunu belirtir. |
| Parameters (Query) | İstekle birlikte gönderilen sorgu (query string) parametrelerini içerir. |
| Anchor | Sayfa içi konumu ifade eder, sunucuya gönderilmez. |
Path + Query Koşulunun Önemi
Bazı senaryolarda path ve query string birlikte anlam ifade eder. Örneğin, aynı path'e farklı query parametreleriyle gelen istekler farklı şekilde işlenebilir.
Path + Query koşulu sayesinde;
- Tam URL eşleştirmesi yapılabilir (domain hariç),
- Belirli path ve parametre kombinasyonları hedeflenebilir,
- URL pattern'leri daha esnek şekilde tanımlanabilir,
- Cache key belirleme senaryolarında kullanılabilir.
Path + Query vs Path vs URL:
| Kriter | Kapsam | Örnek |
|---|---|---|
| Path + Query | Path ve query string | /api/users?id=123 |
| Path | Yalnızca path | /api/users |
| URL | Protokol, host, path, query | http://www.tr7.com/api/users?id=123 |
Kullanılabildiği vService Tipleri
Koşul, hem istek (At Request) hem yanıt (At Response) aşamasında kullanılabilir; değer istek anında tespit edilir.
Nasıl Eklenir?
Yeni bir Path + Query 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 Path + query seçilir.
- Koşula ait ilgili konfigürasyonlar yapılandırılır.
Addbutonuna tıklanarak koşul eklenir.
Path + Query Koşulu Ekleme Formu
Path + Query 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 Path + query 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
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. Bu kriterde Is present seçeneği sunulmaz.
| Seçenek | Kod | Açıklama |
|---|---|---|
| Exact match | exactMatch | Değer birebir eşleşmelidir. |
| Start | start | Değer belirtilen metinle başlamalıdır. |
| End | end | Değer belirtilen metinle bitmelidir. |
| Includes | sub | Değer belirtilen metni içermelidir. |
| Regex | regex | Değer düzenli ifadeyle eşleşmelidir. |
Örnek eşleştirmeler:
| Yöntem | Query | Eşleşen URL'ler |
|---|---|---|
| Exact Match | /users?id=123 | /users?id=123 |
| Start | /api/v1/ | /api/v1/users?active=true |
| Includes | debug=true | /any/path?debug=true |
| Regex | \?.*token= | /api?token=abc, /login?token=xyz |
INFO
Case Insensitive Varsayılan: Kapalı
Büyük/küçük harf duyarlılığını kontrol eder.
- Aktif:
example,EXAMPLE,Exampleaynı kabul edilir - Aktif Değil: Tam eşleşme gerekir (varsayılan)
TIP
Path bölümü çoğu sunucuda büyük/küçük harfe duyarlıdır; parametre değerleri için duyarsız eşleşme gerekiyorsa bu seçenek işaretlenir.
INFO
Query Zorunlu
Eşleştirilecek olan değer bu alana girilir. Koşulun gördüğü tam değer, ? işareti dahil path + sorgu dizesidir: /admin?x=1 isteğinde değerlendirilen metin /admin?x=1'dir. Bu sayede Start yöntemiyle /admin? gibi bir desen, End yöntemiyle sorgu sonu hedeflenebilir. 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.
Örnek değerler:
/login?redirect=/dashboard: Tam URL eşleştirme/api/: API path'leri için başlangıçutm_source=: Marketing parametreli URL'ler
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
Path + sorgu değeri, aksiyonlarda İsteğin yapıldığı dizin/sayfa + query akıllı değişkeniyle kullanılabilir (ör. bir HTTP başlığının, log alanının veya yönlendirme hedefinin 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
- Query String Sıralamasına Dikkat.
?a=1&b=2ve?b=2&a=1farklı string'lerdir; Exact match bu ikisini farklı görür. Sıradan bağımsız olarak tek bir parametrenin değerini denetlemek için Query Parameter koşulu kullanılmalıdır. - URL Encoding'e Dikkat. Query string'deki özel karakterler encode edilmiş olabilir (
%20,%3Dvb.). - Path-Only Yeterliyse Path Koşulunu Kullanın. Sorgu dizesine ihtiyaç yoksa Path koşulu tercih edilmelidir; desenler sorgu varyasyonlarından etkilenmez.
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 Modu Tespiti ve Engelleme
Kullanım Amacı: Production ortamında URL'de debug parametresi içeren istekleri tespit edip engellemek ve kullanıcılara bilgilendirme yapmak.
Konfigürasyon: Content Matching Method → Includes · Query → debug=true
Aksiyon Önerileri:
- ✅ Block → Production ortamında debug parametresi ile gelen istekler 403 Forbidden ile engellenir.
- ✅ Show Content → Debug mode denemelerinde "Debug mode is disabled in production environment" bilgilendirme sayfası gösterilir.
Senaryo 2: Kampanya ve UTM Parametresi Takibi
Kullanım Amacı: Marketing kampanya parametrelerini (utm_campaign, utm_source) tespit edip trafik kaynağı analizi yapmak ve özel header'lar eklemek.
Konfigürasyon: Content Matching Method → Includes · Query → utm_campaign=
Aksiyon Önerileri:
- ✅ Add HTTP Header → Kampanya trafiğine
X-Campaign-Tracked: trueveX-Traffic-Source: campaignheader'ları eklenir. - ✅ Advanced Traffic Inspection → Marketing attribution analizi ve campaign performance tracking için detaylı loglama yapılır.
Senaryo 3: Sayfalama ve Sıralama Kontrolü
Kullanım Amacı: Anormal yüksek sayfa numaraları ile otomatik scraping yapan botları tespit edip engellemek.
Konfigürasyon: Content Matching Method → Regex · Query → /products\?page=[0-9]{3,}
Aksiyon Önerileri:
- ✅ Quarantine → Dakikada 50'den fazla farklı sayfa numarası deneyen IP'ler 30 dakika karantinaya alınır.
- ✅ Advanced Traffic Inspection → Scraping pattern analizi ve anomali tespiti için pagination trafiği loglanır.
Senaryo 4: Arama Sorgusu Güvenlik Kontrolü
Kullanım Amacı: Arama query string'lerinde XSS saldırı pattern'lerini tespit edip engellemek ve saldırgan IP'leri karantinaya almak.
Konfigürasyon: Content Matching Method → Regex · Query → /search\?q=.*(<script|javascript:)
Aksiyon Önerileri:
- ✅ Block → Search query'de XSS pattern tespit edildiğinde istek 400 Bad Request ile engellenir.
- ✅ Quarantine → 3'ten fazla XSS denemesi yapan IP'ler 60 dakika karantinaya alınır, tekrarlayan saldırılar önlenir.
