Büyük POST istekleri engelleniyor veya yarıda kesiliyor; neden?
Kısa cevap
Neden durum kodundan ve Event Logs kaydından ayrılır. Kaydı olan 418'de en sık kural Block Unparsed Contents'tir: gövde, denetim tamponuna (vService Limits'teki Buffer Size(kB) ile Max. Body Size to Process(kB) değerinin büyüğü; varsayılan 4096 kB) sığmamış ya da Wait for body for a time seçiliyken bekleme süresinde tamamlanmamıştır. Bu kural yalnızca isteğin eşleştiği sayfa tipinde Block Unparsed Body seçiliyse engeller: Any Paths'te Allow unparsed body seçilidir ve böyle bir gövde taranmadan geçer, Analysis & Learning'in oluşturduğu sayfa tiplerinde ise Block Unparsed Body seçili gelir. Diğer kayıtlar öğrenilmiş boyut sınırlarıdır: Raw Body Size, JSON Value Length, Form Value Length. Event Logs'ta kaydı olmayan 418'de önce taramanın 2 saniyelik süre sınırı içinde tamamlanıp tamamlanmadığına bakılır; bu engel yalnızca Blocking mode'da, Request Body Limits penceresindeki Fail-open kapalıyken (varsayılan) oluşur. 408 ya da yarıda kesilen istek ise WAF'ın gövdeyi tampona alarak beklemesinden doğar: Wait for body for a time seçili değilken (varsayılan) tampona alınan bölüm HTTP Request Timeout (varsayılan 30 sn) içinde gelmezse istek 408 ile sonlanır.
Sorun: Büyük POST İstekleri Başarısız
Büyük form, JSON ya da dosya gönderen istekler engelleme sayfası (varsayılan durum kodu 418) alıyor, 408 ile sonlanıyor ya da bağlantı yükleme sürerken kopuyor. Aynı belirti WAF'ın gövde sınırlarından, tarama süre sınırından ya da gövdenin beklenme biçiminden kaynaklanabilir; her birinin izi farklı bir ekranda kalır.
Olası Nedenler
| Belirti | Neden | Çözüm |
|---|---|---|
418; Event Logs'ta Block Unparsed Contents (Attack area Raw) | Gövde tampona sığmadı ya da bekleme süresinde tamamlanmadı ve eşleşen sayfa tipinde Block unparsed body seçili | Yöntem 2 ya da Yöntem 3 |
418; Raw Body Size (Attack area Raw) | Gövdenin bildirilen boyutu (Content-Length) kuralın aralığı dışında | Yöntem 1 ya da Yöntem 3 |
| 418; JSON Value Length, Form Value Length, JSON Key Count, JSON Depth, Form Key Count | Gövdedeki bir değerin uzunluğu ya da anahtar sayısı kuralın sınırı dışında | Yöntem 1 |
| 418; Event Logs'ta kayıt yok | Blocking mode'da tarama 2 saniyelik süre sınırı içinde tamamlanamadı (Fail-open kapalıyken, varsayılan) | 418 alan bir istek Event Logs'ta neden görünmüyor? |
| 408 ya da bağlantı yükleme sürerken kopuyor | Gövdenin tampona alınan bölümü HTTP Request Timeout içinde gelmedi ya da istemci Client Timeout süresince veri göndermedi | Büyük dosya yüklemeleri başarısız oluyor; neden? |
| 413 ya da uygulamanın kendi hata sayfası | Sınır Kurum Servisinde (web sunucusunun gövde boyutu sınırı) | Sunucu ayarı |
Kesin kurallar:
- Denetim tamponu, vService'e atanmış vService Limits profilindeki Buffer Size(kB) ile Request Body Limits kartındaki Max. Body Size to Process(kB) değerinin büyüğüdür. Max. Body Size to Process(kB) 1 ile 262144 arasında ayarlanır; varsayılan 4096'dır. Tampona sığmayan gövde kısmen değil hiç çözümlenmez.
- Wait for body for a time seçili değilken (varsayılan) gövdenin tamamı ya da tamponu dolduracak kadarı beklenir; bu bekleme HTTP Request Timeout süresine tabidir. Seçiliyken gövde en fazla Time to Wait Body süresi (varsayılan 300 ms) beklenir; süre dolduğunda tamamlanmamış gövde çözümlenemez sayılır ve Block Unparsed Contents ayarına düşer.
- Raw Body Size gövde boyutunu bütün gövde denetimlerinden önce, içerik türünden bağımsız olarak karşılaştırır. Any Paths'te aralık 1 – 268.435.456 bayttır (256 MiB). Analysis & Learning'in oluşturduğu sayfa tiplerinde aralık en az 16.384 bayt olmak üzere öğrenme sırasında görülen en büyük gövdeye göre genişletilir; daha büyük bir istek bu sınırı aşar.
- Any paths'te JSON Value Length 0 – 1.048.576, Form Value Length 0 – 2.097.152 karakterdir. Çok parçalı gövdede dosya alanının değeri dosyanın içeriği değil adıdır; dosya boyutu Form Value Length'i etkilemez.
- Block Unparsed Contents, Raw Body Size ve değer sınırları 24 puanlık yapısal ihlallerdir; her koruma düzeyinde tek başına engelleme eşiğine ulaşır. Blocking mode'da engeller, Monitor mode'da yalnızca kayıt üretir, Learning mode'da puanlanmaz. Raw Body Size ve değer sınırları Checks kartındaki Structure Checks açıkken (varsayılan) uygulanır; Block Unparsed Contents bu anahtardan bağımsızdır.
- Tampona sığmayan ya da kırpılan gövde Event Logs kaydına yazılmaz; kayıtta Body alanı görünmez.
Nereden İzlenir?
| Ekran | Yol | Ne gösterir |
|---|---|---|
| Event Logs | Left Monitor Panel → WAF-Protected vServices → vService → Event Logs | Attacks sekmesinde ihlal edilen sınır, Corresponding rule ve Learning suggestion; Request & Location sekmesinde WAF time |
| Request Body Limits kartı | WAF Management → Inspection & Blocking | İşlenecek gövde boyutu ve gövde bekleme süresi (kart) |
| HTTP Logs | Left Monitor Panel → Load Balancer vServices → vService → Logs & Tracking | Durum kodu (418, 408, 413) |
| Debug Mode Logs | Aynı sekmede (vService Debug mode'dayken) | Security action (zaman aşımında WAF · Attack blocked — scan timed out) ve Termination state (408'de During request · Client timeout) |
Nasıl Teşhis Edilir?
- Hatanın durum kodu belirlenir; 413 ya da uygulamanın hata sayfası Kurum Servisinden gelir.
- 418'de kullanıcının engelleme sayfasındaki Request ID, Event Logs'un sunucu filtresindeki Request Unique ID alanına yazılır ve Save & get logs tıklanır.
- Kayıt varsa Attacks sekmesindeki Attack Name okunur ve yukarıdaki tabloyla eşleştirilir; Corresponding Rule değişikliğin yapılacağı kuralı gösterir. Raw Body Size ve değer sınırlarında Learning Suggestion eski ve önerilen aralığı yazar.
- Kayıt yoksa ya da yanıt 408 ise HTTP vService'in Status alanı Debug mode yapılır, istek tekrarlanır ve Debug mode logs'ta Security action ile Termination state okunur (418 alan bir istek Event Logs'ta neden görünmüyor?). İnceleme bitince Status yeniden Enabled yapılır. Debug mode'u açmak Load Balancer alanında değiştirme, Debug Mode Logs'u görmek Load Balancer alanında izleme yetkisi ister; yalnız WAF yetkisi olan kullanıcıda bu ekranlar açılmaz (Logs & Tracking).
- Request Body Limits kartında işlenecek gövde boyutu ve bekleme süresi, sayfa tipinin Raw sekmesinde Block Unparsed Contents ve Raw Body Size değerleri kontrol edilir.
Çözüm: Dört Yöntem
Yöntemler birbirinin alternatifidir. Tampon büyütmek gövdeyi taramaya açar ama bellek kullanımını ve tarama süresini artırır; sayfa tipinde Allow Unparsed Body seçmek gövdeyi taramadan geçirir.
| Durumunuz | Uygun yöntem |
|---|---|
| Raw Body Size ya da değer sınırı kaydı; tek tek false positive | Yöntem 1: Event Logs'tan Allow |
| Block Unparsed Contents kaydı; büyük gövde de taransın isteniyor ya da bekleme süresi kısa | Yöntem 2: Request Body Limits |
| Block Unparsed Contents ya da Raw Body Size kaydı yalnızca belirli bir yükleme ucunda | Yöntem 3: Sayfa tipinin Raw ortak kuralı |
| Ayar komut satırından yapılacak | Yöntem 4: WEB-CLI |
| 408 ya da yükleme sürerken kopma | Uzun süren işlemlerde (rapor, dosya yükleme) istek neden yarıda kesiliyor; hangi timeout'u artırmalıyım? |
| Event Logs'ta kaydı olmayan 418 | Tarama belirli bir süreyi aşarsa istek ne olur (2 saniyelik tarama sınırı)? |
Yöntem 1: Event Logs'tan Allow Önerilen
- Nasıl çalışır Kayıttaki sınır öğretilir: Raw Body Size ya da değer sınırı kaydedilen değeri kapsayacak şekilde genişletilir; Block Unparsed Contents kaydında sayfa tipi Allow Unparsed Body'ye çevrilir ve tampona sığmayan gövde bundan sonra taranmadan geçer. Yapılacak değişiklik Learning Suggestion satırında önceden yazar.
- Nerede açılır Left Monitor Panel → WAF-Protected vServices → vService → Event Logs → kayıt → Attacks
- Gereksinim WAF değiştirme yetkisi; kaydın Event Logs'ta bulunması (host grubu Monitor ya da Blocking mode'da)
- vService tipi HTTP
Adım adım yapılandırma
Left Monitor Panel'de WAF-Protected vServices kategorisi seçilir, vService'e tıklanır ve Event Logs sekmesi açılır.
Sunucu filtresi sekmesinde Request Unique ID alanına Request ID yazılır ya da Date Range olay zamanını kapsayacak şekilde seçilir (sunucu filtresi).
Save & Get Logs tıklanır.
Satıra tıklanır ve önizlemede Attacks sekmesi seçilir; Attack Name, Corresponding Rule ve Learning Suggestion okunur. Önerilen aralık beklenen en büyük isteği kapsamıyorsa öğretme yerine Edit Corresponding Rule ile kural elle düzenlenir (Yöntem 3).
Saldırı tablosunda öğretilecek ihlalin kutusu işaretlenir.
Tablonun üstündeki buton tıklanır. Buton engellenmiş bir kayıtta Allow, Monitor mode'da yazılmış bir kayıtta Teach adını taşır (Allow / Teach).
Are you sure? sorusunda Yes tıklanır; değişiklik ayrı bir dağıtım adımı olmadan uygulanır. Cluster kurulumunda değişiklik varsayılan auto-sync ile eş cihaza da gönderilir; Manual Sync Mode açıksa Synchronize ile gönderilir.
Doğrulama
Event Logs'ta öğretilen kaydın Attacks kolonuna bakılır.
İlk sayı 0; satır yeşilYöntem 2: Request Body Limits
- Nasıl çalışır vService genelinde işlenecek gövde boyutu büyütülür ya da gövde bekleme süresi uzatılır; tampona sığan ve zamanında tamamlanan gövde çözümlenip taranır.
- Nerede açılır Left Monitor Panel → WAF-Protected vServices → vService → WAF Management → Inspection & Blocking → Request Body Limits kartı
- Gereksinim WAF değiştirme yetkisi
- Kapsam vService geneli; bütün host grupları ve sayfa tipleri
Adım adım yapılandırma
Left Monitor Panel'de WAF-Protected vServices seçilir, vService'e tıklanır ve WAF Management sekmesi açılır.
Inspection & Blocking bölümündeki Request Body Limits kartının kalem ikonu tıklanır; Request Body Limits penceresi açılır (Edit ekranı).
| Kayıt / belirti | Alan |
|---|---|
| Block Unparsed Contents; gövde tampondan büyük | Max. Body Size to Process(kB) beklenen en büyük gövdeyi kapsayacak şekilde artırılır (1 – 262144; varsayılan 4096). Tampon büyüdükçe cihazın bellek kullanımı ve büyük gövdelerin tarama süresi artar (Max. body size to process en fazla kaç olabilir; log sınırı ile ilişkisi nedir?) |
| Block Unparsed Contents; Wait for body for a time seçili ve yavaş istemci | Time to Wait Body uzatılır ya da Wait for body for a time işareti kaldırılır; işaret kaldırılınca gövde HTTP Request Timeout süresince beklenir ("Wait for body for a time" ne işe yarar?) |
Edit tıklanır; WAF yapılandırması ayrı bir dağıtım adımı olmadan yeniden üretilip uygulanır. Yeni değer istek tamponunu (Buffer Size(kB) ile bu değerin büyüğü) değiştirirse kayıtla birlikte vService yeniden başlatılır; bu yüzden değişiklik bakım penceresinde yapılır. Cluster kurulumunda değişiklik varsayılan auto-sync ile eş cihaza da gönderilir; Manual Sync Mode açıksa Synchronize ile gönderilir.
Doğrulama
Request Body Limits kartındaki cümlelere bakılır.
İşlenecek gövde boyutu ve bekleme süresi yeni değeri gösterirBüyük istek tekrarlanır.
Block unparsed contents kaydı oluşmazYöntem 3: Sayfa Tipinin Raw Ortak Kuralı
- Nasıl çalışır Büyük gövde alan uç için kendi sayfa tipinde Block Unparsed Contents Allow unparsed body yapılır ve Raw Body Size aralığı genişletilir; değişiklik yalnızca bu sayfa tipine uygulanır.
- Nerede açılır Left Monitor Panel → WAF-Protected vServices → vService → WAF Management → N page types → kural → Raw sekmesi
- Gereksinim WAF değiştirme yetkisi
- vService tipi HTTP
Adım adım yapılandırma
WAF Management sekmesinde isteğin düştüğü host grubunun mod kartındaki N page types bağlantısı tıklanır (ekrana erişim).
Kayıttaki Corresponding Rule Any Paths ya da geniş bir glob kuralıysa ve değişiklik yalnızca bu uçta istenirse araç çubuğundaki Add tıklanır. Ucun sayfa tipi varsa 5. adıma geçilir.
Path alanına ucun yolu joker karakter olmadan (ör. /api/import) yazılır (Exact path ekleme ekranı).
Add tıklanır; sayfa tipi listeye eklenir.
Listede ucun satırına tıklanır; detay paneli açılır.
Panelin sekme şeridinde Raw tıklanır.
Add Common Rule for Raw (kuralın kendi Raw ortak kuralı yoksa; form Any paths'in Raw değerleriyle dolu açılır) ya da Edit Common Rule for Raw tıklanır (Add common rule for Raw ekranı).
Block Unparsed Contents anahtarı Allow Unparsed Body konumuna alınır; alanın ipucu tamponun boyutunu gösterir. Raw Body Size aralığının üst sınırı bayt cinsinden uçtaki en büyük gövdeye göre artırılır. Allow Unparsed Body seçilen sayfada tampona sığmayan gövdeye JSON, XML, Form ve Raw denetimlerinin hiçbiri uygulanmaz; risk, uca yalnızca güvenilen istemcilerin erişmesiyle ya da içeriğin Kurum Servisinde doğrulanmasıyla dengelenir.
Formdaki Add ya da Edit tıklanır; değişiklik ayrı bir dağıtım adımı olmadan uygulanır. Cluster kurulumunda değişiklik varsayılan auto-sync ile eş cihaza da gönderilir; Manual Sync Mode açıksa Synchronize ile gönderilir.
Doğrulama
Kuralın Raw sekmesindeki Block Unparsed Contents ve Raw Body Size satırlarına bakılır.
Allow unparsed body; yeni aralıkYöntem 4: WEB-CLI
- Nasıl çalışır vService'in WAF ayarları
waf options update, sayfa tipinin Raw ortak parçasıwaf rule-parts updatekomutuyla güncellenir (WEB-CLI). - Nerede açılır WEB-CLI →
waf options·waf fw-rules·waf rule-parts - Gereksinim WEB-CLI erişimi ve WAF değiştirme yetkisi
- vService tipi HTTP
Adım adım yapılandırma
Değer kB cinsindendir (gövde işleme alanları):
waf options update poolId <vService> --bodyParseLimit 16384 --syncWithDefaultFwRules false--syncWithDefaultFwRules saklanan bir ayar değil, bir yazma tetiğidir: yalnız true yazıldığında Any paths kuralı varsayılan tanımıyla yeniden kurulur; komutta yazılmazsa kural setine dokunulmaz. Komuttaki false bunu açıkça belirtir (Sync with Default WAF Rules; temel denetimler).
waf fw-rules list poolId <vService> hostGroupId <grup>waf rule-parts list poolId <vService> hostGroupId <grup> ruleId <kural>Bölgesi raw olan parça Raw ortak parçasıdır. Varsayılan host grubunun kimliği defaultHost, Any paths kuralının kimliği wr-default'tur. Listede Raw parçası yoksa kural Raw ayarlarını devralmaktadır; ortak parça arayüzde Yöntem 3'teki Add Common Rule for Raw ile oluşturulur.
Tampona sığmayan gövdeye izin verilir ve Raw Body Size aralığı 50 MiB'a genişletilir (loc raw alanları):
waf rule-parts update poolId <vService> hostGroupId <grup> ruleId <kural> id <parça> --rawBlockUnparsed false --rawSize.op "-" --rawSize.val 1 --rawSize.val2 52428800Doğrulama
vService'in WAF ayarları ve Raw parçası yeniden görüntülenir.
Komut: waf options show poolId <vService>
bodyParseLimit 16384waf rule-parts show poolId <vService> hostGroupId <grup> ruleId <kural> <parça> ile görüntülenir; rawBlockUnparsed false beklenir.Sık Yapılan Hatalar
- Tamponu gereğinden büyük tutmak. Tampon büyüdükçe bellek kullanımı ve büyük gövdelerin tarama süresi artar; Blocking mode'da taraması 2 saniyelik süre sınırı içinde tamamlanamayan istek engellenir. Büyük gövdeli tek bir uç için sayfa tipinde Allow Unparsed Body ve Raw Body Size sınırı tercih edilir.
- Any paths'te büyük gövdenin tarandığını sanmak. Any paths'te Allow Unparsed Body seçilidir; tampona sığmayan gövde engellenmez ama hiç taranmaz.
- 408'i WAF engeli sanmak. Engelleme sayfası ve Event Logs kaydı yoktur; gövde beklenirken HTTP Request Timeout dolmuştur.
- Zaman aşımı engelini kaldırmak için host grubunu Monitor mode'a almak. Bu, o gruptaki bütün WAF engellemesini kaldırır. Önce taranan gövde küçültülür; istek küçültülemiyorsa yalnızca bu engelleri kaldıran Fail-open açılır (418 alan bir istek Event Logs'ta neden görünmüyor?).
- Analysis & Learning ile üretilmiş sayfa tiplerindeki sınırları unutmak. Raw Body Size ve değer uzunlukları öğrenme dönemindeki trafiğe göre belirlenir, Block Unparsed Body seçili gelir; daha büyük istekler yayına girmeden önce sınırlar gözden geçirilir.
Dokümantasyonda nasıl yapılır
