Path
Path Koşulu Nedir?
Path koşulu, HTTP isteğinin URL'sindeki path (yol) bölümünü değerlendirerek trafik yönlendirme ve manipülasyon kararları almak için kullanılan bir koşul tipidir.
Path, URL'nin domain'den sonra gelen ve query string'den önceki bölümüdür.
Path koşulu tek başına bir işlem gerçekleştirmez; yalnızca tanımlanan eşleşme sağlandığında koşul sağlanmış kabul edilir ve bu koşula bağlı aksiyonların devreye girmesini sağlar.
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 Koşulunun Önemi
Modern web uygulamalarında path, kaynağın tanımlanmasında temel rol oynar. API endpoint'leri, sayfa yolları ve kaynak konumları path üzerinden belirlenir.
Path koşulu sayesinde;
- API endpoint'lerine özel güvenlik politikaları uygulanabilir,
- Statik içerik ve dinamik içerik için farklı önbellek kuralları tanımlanabilir,
- Yönetim paneli yollarına erişim kısıtlaması yapılabilir,
- URL yeniden yazma (rewrite) senaryoları uygulanabilir,
- Microservice routing kararları alınabilir.
Bu yönüyle Path koşulu, TR7 üzerinde URL bazlı trafik kontrolünün en temel yapı taşlarından biridir.
Path vs Path + Query vs URL:
| Kriter | Kapsam | Örnek |
|---|---|---|
| Path | Yalnızca path | /api/users |
| Path + Query | Path ve query string | /api/users?id=123 |
| 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; path değeri istek anında tespit edilir ve yanıt aşamasında da aynı değer üzerinden değerlendirilir.
Nasıl Eklenir?
Yeni bir Path 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 seçilir.
- Koşula ait ilgili konfigürasyonlar yapılandırılır.
Addbutonuna tıklanarak koşul eklenir.
Path Koşulu Ekleme Formu
Path 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 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 path eşleştirmeleri:
| Yöntem | Query | Eşleşen Path'ler |
|---|---|---|
| Exact Match | /api/users | /api/users |
| Start | /api/ | /api/users, /api/products |
| End | .json | /data.json, /api/users.json |
| Includes | admin | /admin, /api/admin/users |
| Regex | ^/api/v[0-9]+/ | /api/v1/users, /api/v2/products |
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
URL path'leri ve header isimleri genellikle case-insensitive işlenmeli, değerler ise case-sensitive kalmalıdır.
INFO
Query Zorunlu
Eşleştirilecek olan değer bu alana girilir. 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:
/api/v1/users: Exact match için/admin: Admin sayfaları için start match.php: PHP dosyaları için end match^/products/[0-9]+$: Ürün ID regex
URL Kodlaması
Koşul, path'i istemciden geldiği ham (kodlanmış) haliyle değerlendirir; %2F, %2e gibi yüzde-kodlamalar veya nokta-segmentler (/./, /../) içeren istekler, düz metin desenlerle eşleşmeyebilir. URL Normalization aksiyonu path'i koşul değerlendirmesinden sonra normalize eder: koşulu bu tür atlatmalara karşı korumaz. Güvenlik amaçlı path denetimlerinde kodlanmış varyantları da kapsayan Regex desenleri tercih edilmelidir.
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
İsteğin path değeri, aksiyonlarda İsteğin yapıldığı dizin/sayfa akıllı değişkeniyle 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
- Başlangıç Eşleştirmesini Tercih Edin. API versiyonlama ve path prefix'leri için
Startyöntemi daha performanslı ve sürdürülebilirdir. - Regex'i Dikkatli Kullanın. Regex güçlüdür ancak performans maliyeti vardır. Basit eşleştirmeler için diğer yöntemleri tercih edin.
- Trailing Slash'a Dikkat Edin.
/api/usersve/api/users/farklı path'lerdir. Tutarlılık için normalize edin veya her ikisini de kapsayacak koşullar oluşturun. - Case Sensitivity Kararını Bilinçli Verin. URL path'leri genellikle case-sensitive'dir. Ancak Windows sunucular case-insensitive olabilir.
- Hem Path Hem de Query Kontrolüne İhtiyaç Varsa Path + Query Koşulunu Kullanın. Query string'ine de ihtiyacınız varsa Path + Query koşulunu tercih edin.
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: API Endpoint'lerine Koruma ve Sınırlama
Kullanım Amacı: API isteklerine özel güvenlik, rate limiting ve bot koruması uygulamak için path bazlı trafik kontrolü sağlamak.
Konfigürasyon: Content Matching Method → Start · Query → /api/
Aksiyon Önerileri:
- ✅ Bandwidth Limitation → API endpoint'lere IP bazlı 10 Mbps throughput sınırı uygulanır, aşırı yüklenme önlenir.
- ✅ Quarantine → Dakikada 100'den fazla API isteği gönderen IP'ler 5 dakika süreyle karantinaya alınır.
- ✅ Advanced Traffic Inspection → API kullanım istatistikleri ve anomali tespiti için detaylı loglama yapılır.
Senaryo 2: Admin Paneli Erişim Kontrolü
Kullanım Amacı: Yönetim paneline yetkisiz erişimleri engellemek ve tüm admin erişim denemelerini loglamak için çok katmanlı güvenlik uygulamak.
Konfigürasyon: Content Matching Method → Start · Query → /admin
Aksiyon Önerileri:
- ✅ Block → Yetkili IP listesi dışındaki kaynaklardan admin panel erişimi 403 Forbidden ile engellenir.
- ✅ Show Content → Yetkisiz erişim denemelerinde "Access Denied - Admin Panel" özel uyarı sayfası gösterilir.
- ✅ Advanced Traffic Inspection → Tüm admin path erişim denemeleri detaylı şekilde loglanır, güvenlik analizi yapılır.
Senaryo 3: Statik İçerik Optimizasyonu
Kullanım Amacı: Statik dosyalar (CSS, JS, resim) için browser cache optimizasyonu ve log gürültüsü azaltma.
Konfigürasyon: Content Matching Method → Regex · Query → \.(css|js|png|jpg|gif|ico|woff|woff2)$
Aksiyon Önerileri:
- ✅ Add HTTP Header → Statik dosyalara
Cache-Control: max-age=31536000header'ı eklenir, 1 yıl browser cache sağlanır. - ✅ Conditional Silent Log → Statik içerik istekleri loglanmaz, log volume ve disk kullanımı azaltılır.
Senaryo 4: Hassas Dosya ve Dizinlere Erişim Koruması
Kullanım Amacı: Konfigürasyon dosyaları (.env, wp-config.php), versiyon kontrol dizinleri (.git) gibi hassas path'lere erişimi engellemek ve saldırı denemelerini izlemek.
Konfigürasyon: Content Matching Method → Includes · Query → .env
Aksiyon Önerileri:
- ✅ Block → Hassas dosya path'leri (
.env,.git,wp-config.php) 404 Not Found ile engellenir, dosya varlığı gizlenir. - ✅ Quarantine → 5 dakika içinde 3'ten fazla hassas dosya erişim denemesi yapan IP'ler 60 dakika karantinaya alınır.
