Büyük istek gövdeleri (dosya yükleme) WAF performansını nasıl etkiler?
Kısa cevap
Büyük gövdeler WAF performansını üç yoldan etkiler: bekleme, işlemci ve bellek. Bekleme: WAF gövdeyi denetleyebilmek için varsayılan olarak gövdenin tamamının gelmesini ya da tamponun dolmasını bekler; Kurum Servisine istek bundan sonra iletilir. Wait for Body for a Time açılırsa en çok Time to Wait Body kadar beklenir (varsayılan 300 ms). İşlemci: gövde büyüdükçe ve karmaşıklaştıkça ayrıştırma ve imza taraması uzar; multipart yüklemelerde gövdenin tamamı (Raw alanında OWASP Check açıksa), dosya içerikleri (ayrıca OWASP Check in Upload açıksa) ve alan değerleri (Form alanında OWASP Check açıksa) ayrı ayrı taranır. Sayfa tipinde denetimi kapalı olan gövde türleri ayrıştırılmaz. Bellek: istek tamponu Max. Body Size to Process(kB) (WAF açılışta 4096) ile vService Limits profilindeki Buffer Size(kB) değerlerinin büyüğüdür; bu değerlerden birinin değiştirilmesi tamponu değiştirirse vService yeniden başlatılır, bu yüzden bakım penceresinde yapılır. Tampona sığmayan ya da süresinde tamamlanmayan gövde ayrıştırılmaz ve taranmaz; ne olacağını sayfa tipinin Raw ayarları belirler. Blocking Mode'da taraması 2 saniyelik süre sınırı içinde tamamlanamayan istek engellenir (Request Body Limits penceresindeki Fail-open açıksa taranmadan geçirilir). Yükleme sayfaları için sınırı körlemesine büyütmek yerine o sayfa tipinde yalnızca gereken denetimleri açık tutmak ve izinli dosya türlerini (Allowed Upload Mime Types) kısıtlamak daha dengelidir.
Etkiler
| Etki | Neden | İlgili ayar |
|---|---|---|
| Bekleme | Gövdenin tamamı ya da tamponun dolması beklenir | Wait for Body for a Time, Time to Wait Body ("Wait for body for a time" ne işe yarar?) |
| İşlemci | Ayrıştırma ve tarama gövdeyle büyür | Sayfa tipinin gövde denetimleri; OWASP Check in Upload |
| Bellek | Tampon = Max. Body Size to Process(kB) ile Buffer Size(kB)'ın büyüğü | Max. Body Size to Process(kB) (Max. body size to process en fazla kaç olabilir; log sınırı ile ilişkisi nedir?), Buffer Size(kB) (Buffer size ne işe yarar; ne zaman değiştirmeliyim?) |
| Yeniden başlatma | Tampon değişikliği vService'i yeniden başlatır | Bakım penceresinde değiştirilir |
| Sınırı aşan gövde | Ayrıştırılmaz ve taranmaz; Raw ayarları belirler | Max. Body Size to Process(kB) sınırını aşan veya zamanında tamamlanmayan istek gövdeleri ne olur? |
| Süre aşımı | Blocking Mode'da taraması 2 saniyelik süre sınırı içinde tamamlanamayan istek engellenir; Fail-open açıksa taranmadan geçirilir | Tarama belirli bir süreyi aşarsa istek ne olur (2 saniyelik tarama sınırı)? |
- Ayar yolu: Left Monitor Panel → WAF-Protected vServices → vService → WAF Management → Inspection & Blocking bölümündeki Request Body Limits kartının kalem ikonu → alanlar → Edit. Max. Body Size to Process(kB) 1 ile 262144 arasında değer alır.
- WEB-CLI ile de gövde bekleme süresi 300 ms ile sınırlanabilir.
--syncWithDefaultFwRulessaklanan bir ayar değil, bir yazma tetiğidir: yalnıztrueyazıldığında Any Paths kuralı varsayılan tanımıyla yeniden kurulur; komutta yazılmazsa kural setine dokunulmaz. Komuttakifalsebunu açıkça belirtir (Sync with Default WAF Rules):
waf options update poolId <vService> --syncWithDefaultFwRules false --dontBufferRequest true --waitForBodyMs.val 300 --waitForBodyMs.unit ms- Multipart taraması: Multipart isteklerde gövdenin tamamı ayrıca taranır mı? · Dosya içeriği: Yüklenen dosyaların içeriği de taranıyor mu (OWASP Check in Upload)?
- WAF Time gövde bekleme süresini içermez (WAF Time değeri tam olarak neyi ölçer?); WAF Report'un Traffic görünümünde gövde boyutu ve WAF Time kırılımları yan yana okunur.
Sık Karıştırılan Noktalar
- "Sınırı büyütmek yalnızca daha fazla denetim demektir." İstek tamponu büyür, bellek tüketimi artar ve tampon değişirse vService yeniden başlatılır.
- "Sınırı aşan gövdenin ilk kısmı taranır." Gövde hiç ayrıştırılmaz ve taranmaz; Raw ayarlarına göre engellenir ya da geçer.
- "Yavaş yüklenen dosya 2 saniyelik sınıra takılır." Gövdenin ağdan gelmesini beklemek tarama süresine girmez.
Dokümantasyonda nasıl yapılır
