Skip to content
Smarter by Design.Simpler for Business

HTTP Request Body ​

HTTP Request Body Koşulu Nedir? ​

HTTP Request Body koşulu, HTTP isteğinin gövde (body) içeriğini değerlendirerek trafik yönlendirme ve manipülasyon kararları almak için kullanılan bir koşul tipidir.

HTTP istek gövdesi, istemcinin (tarayıcı, mobil uygulama, API client vb.) sunucuya gönderdiği asıl verinin bulunduğu bölümdür. Başlıklardan sonra, bir boş satırın ardından gelen veri bölümüdür.

POST /api/users HTTP/1.1
Host: www.example.com
Content-Type: application/json
Content-Length: 45
↓ HTTP Request Body
{"username":"john","password":"secret12345"}

Bu koşul, POST, PUT, PATCH gibi gövde içeren HTTP isteklerini kontrol etmek için kullanılır.

WARNING

İstek gövdesini kontrol etmek, tüm gövdenin bellekte tutulmasını gerektirir. Bu nedenle Body Size to Parse(Bytes) ayarı ile kontrol edilecek gövde boyutu sınırlandırılmalıdır.

HTTP Request Body Koşulunun Önemi ​

Modern API'lerde ve web uygulamalarında istek gövdesi, kullanıcı verilerini, form içeriklerini ve API payload'larını taşır.

HTTP Request Body koşulu sayesinde;

  • JSON/XML payload'ları içerik bazlı filtrelenebilir,
  • Form verileri kontrol edilebilir,
  • Hassas veri içeren istekler tespit edilebilir,
  • Belirli pattern'lere sahip istekler farklı işlenebilir,
  • Güvenlik filtreleri uygulanabilir.

HTTP Request Body vs HTTP Response Body

KriterHTTP Request BodyHTTP Response Body
Yönİstemci → SunucuSunucu → İstemci
İçerikForm, JSON, XMLHTML, JSON, Dosya
DeğerlendirmeRequest + Response aşamasıYalnız Response aşaması

Kullanılabildiği vService Tipleri ​

HTTP
L7 TCP
Network

Koşul, hem istek (At Request) hem yanıt (At Response) aşamasında kullanılabilir; gövde istek anında okunur ve yanıt aşamasında da aynı değer üzerinden değerlendirilebilir.

Nasıl Eklenir? ​

Yeni bir HTTP Request Body Koşulu, TR7 web yönetim arayüzü üzerinden aşağıdaki adımlar izlenerek eklenebilir:

  1. Sol altta bulunan TR7 logosuna tıklanarak Configuration Menu açılır.
  2. Load Balancer → Conditions → Add adımları takip edilir.
  3. Criteria olarak HTTP request body seçilir.
  4. Koşula ait ilgili konfigürasyonlar yapılandırılır.
  5. Add butonuna tıklanarak koşul eklenir.

HTTP Request Body Koşulu Ekleme Formu ​

HTTP Request Body Koşulu Ekleme FormuHTTP Request Body 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 HTTP request body 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çenekKodAçıklama
Exact matchexactMatchDeğer birebir eşleşmelidir.
StartstartDeğer belirtilen metinle başlamalıdır.
EndendDeğer belirtilen metinle bitmelidir.
IncludessubDeğer belirtilen metni içermelidir.
RegexregexDeğer düzenli ifadeyle eşleşmelidir.

Örnek Gövde Eşleştirmeleri:

YöntemQueryEşleşen Gövdeler
Includes"admin"JSON'da admin kelimesi
Regex"role"\s*:\s*"admin"JSON role:admin
Start<?xmlXML belgeleri
IncludespasswordŞifre içeren istekler

INFO

Case Insensitive Varsayılan: Kapalı ​

Büyük/küçük harf duyarlılığını kontrol eder.

  • Aktif: example, EXAMPLE, Example aynı 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:

  • "admin":true: Admin yetkisi kontrolü
  • <script>: XSS payload tespiti
  • SELECT.*FROM: SQL injection regex
  • password: Şifre alanı içeren istekler

INFO

Body Size to Parse(Bytes) ​

HTTP istek gövdesinin kaç byte'ının kontrol edileceği belirlenir; gövdenin yalnızca bu alanda belirtilen ilk N baytı incelenir, sonrası hiç değerlendirilmez.

DeğerAçıklama
Minimum1 byte
Maksimum16384 bytes (16 KB)
Varsayılan1024 bytes (form açılış değeri; alan boş bırakılırsa sistem 4096 kullanır)

TIP

Performans için mümkün olan en düşük değer kullanılmalıdır; aranan desen genellikle gövdenin başındadır.

WARNING

Gövde denetimi, vService üzerinde istek tamponlamayı gerektirir ve maliyeti vService genelinde oluşur: aynı vService'te birden fazla gövde koşulu varsa, istekler bu koşullar arasındaki en büyük Body size değerine kadar tamponlanır. 16 KB gibi yüksek bir değer tek bir koşul için bile verilse, o vService'teki tüm istekleri etkiler.

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.

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 EklendiKoşul Eklendi

Operasyonel Kullanım Önerileri ​

  • Body Size'ı Optimize Edin. Gereksiz yere yüksek body size ayarlamayın. Aradığınız pattern genellikle gövdenin başında veya belirli bir bölümünde olacaktır.
  • Güvenlik Taraması için Kullanın. SQL injection, XSS gibi saldırı pattern'lerini tespit etmek için regex kullanın.
  • JSON/XML Yapısına Dikkat. JSON ve XML'de whitespace farklılıkları olabilir. Regex yazarken \s* gibi esnek pattern'ler kullanın.
  • GET İsteklerinde Çalışmaz. GET istekleri genellikle gövde içermez. Bu koşul POST, PUT, PATCH gibi metodlarda anlamlıdır.

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: SQL Injection Saldırı Tespiti ve Engelleme ​

Kullanım Amacı: HTTP istek gövdesinde SQL injection pattern'lerini tespit ederek veritabanı saldırılarını engellemek ve uygulama güvenliğini korumak.

Konfigürasyon: Content Matching Method → Regex · Case insensitive → işaretli · Query → (SELECT|INSERT|UPDATE|DELETE|DROP|UNION).*FROM · Body size to parse → 4096

Aksiyon Önerileri:

  • ✅ Block → SQL injection pattern'i tespit edildiğinde istek 403 Forbidden ile engellenir.

Senaryo 2: XSS (Cross-Site Scripting) Saldırı Tespiti ​

Kullanım Amacı: HTTP istek gövdesinde XSS payload'larını tespit ederek client-side saldırıları engellemek ve kullanıcı güvenliğini sağlamak.

Konfigürasyon: Content Matching Method → Regex · Case insensitive → işaretli · Query → <script|javascript:|onerror=|onload= · Body size to parse → 4096

Aksiyon Önerileri:

  • ✅ Show Content → XSS pattern'i tespit edildiğinde istek engellenir, "An unexpected request was made." redacted yanıtı gösterilir.

Senaryo 3: Hassas Veri İçeren İsteklerin Tespiti ​

Kullanım Amacı: İstek gövdesinde şifre, kredi kartı gibi hassas veri taşıyan istekleri tespit ederek şifrelenmemiş (HTTP) bağlantılardan gönderilmesini engellemek.

Konfigürasyon: Content Matching Method → Regex · Case insensitive → işaretli · Query → (password|credit_card|ssn|cvv) · Body size to parse → 8192

Aksiyon Önerileri:

  • ✅ Block → Hassas veri HTTP protokolü üzerinden gönderiliyorsa istek engellenir, HTTPS zorunlu tutulur.
  • ✅ Add HTTP Header → X-Contains-PII: true header'ı eklenir, Kurum Servisi hassas veri varlığını bilir.