Bir sayfada JSON veya XML gövdesini tamamen yasaklayabilir miyim (Block All JSON Contents / Block All XML Contents)?
Kısa cevap
Evet. Sayfa tipinin JSON ya da Xml sekmesindeki ortak kuralda Block All JSON Contents ya da Block All XML Contents kutusu işaretlendiğinde, Content-Type'ı o türü bildiren ve gövde taşıyan her istek, gövde çözümlenmeden Structure Policies kategorisinde 24 puanlık ihlal üretir; form gövdeleri için Form sekmesinde Block All Form Contents bulunur. Kutu Checks penceresindeki ana anahtarlardan bağımsız çalışır ve Blocking ile Monitor modlarında uygulanır. Any paths varsayılanında üç kutu da işaretsizdir ve sayfa tipinde açılan ortak kural formu bu değerle gelir. OWASP Protection Level Aggressive iken Sync with Default WAF Rules işaretlenip kaydedilirse Any paths sıkı şablonla yeniden kurulur ve üç kutu işaretli gelir.
Sorun: Gövde Beklenmeyen Bir Türde Geliyor
Yalnızca form ya da JSON kabul eden bir path'e XML gövde (XXE denemeleri), ya da hiç JSON beklemeyen bir path'e JSON gövde gönderiliyor. Uygulamanın kullanmadığı bir gövde türünün o path'e hiç ulaşmaması isteniyor.
Çözüm: İki Yöntem
İki yöntem aynı kutuyu ayarlar; biri seçilir.
| Durumunuz | Uygun yöntem |
|---|---|
| Ayarı arayüzden yapmak istiyorum | Yöntem 1: Ortak kuralda Block all kutusu |
| Betik ya da komut satırıyla yapmak istiyorum | Yöntem 2: WEB-CLI |
Yöntem 1: Ortak Kuralda Block All Kutusu Önerilen
- Nasıl çalışır
Content-TypeJSON, XML ya da form türünü bildiriyorsa gövde çözümlenmeden ihlal yazılır. - Nerede açılır Left Monitor Panel → WAF-Protected vServices → vService → WAF Management → N page types → kural → JSON / Xml / Form → Add Common Rule for …
- Gereksinim Ana anahtar gerekmez (Structure checks ve Argument checks kapalıyken de çalışır)
- vService tipi WAF açık HTTP vService
- Kapsam JSON:
…/jsonve+json· Xml:…/xmlve+xml· Form:application/x-www-form-urlencodedvemultipart/form-data
Adım adım yapılandırma
Left Monitor Panel → WAF-Protected vServices → vService → WAF Management sekmesinde host grubunun N page types satırına tıklanır (Page Types ekranına erişim).
Gövde türünün yasaklanacağı sayfa tipinin satırına tıklanır; detay paneli sağda açılır (panele erişim). Sayfa tipi yoksa önce eklenir (Yeni bir page type'ı elle nasıl eklerim?).
Yasaklanacak türe göre JSON, Xml ya da Form sekmesine tıklanır.
Tablonun üstündeki Add Common Rule for … tıklanır; kural kendi ortak kuralına sahipse buton Edit Common Rule for … olarak görünür. Ekleme formu Any paths kuralının o bölümdeki değerleriyle (kutu işaretsiz) dolu açılır.
Block All JSON Contents (ya da Block All XML Contents, Block All Form Contents) kutusu işaretlenir.
Add (düzenlemede Edit) tıklanır; değişiklik ayrı bir dağıtım adımı olmadan uygulanır. Cluster kurulumunda varsayılan auto-sync ile eş cihaza da gönderilir; Manual Sync Mode açıksa eş cihaza elle gönderilir.
Doğrulama
Host grubu Blocking modundayken yasaklanan türde gövde gönderilir.
Komut: curl -s -o /dev/null -w "%{http_code}\n" -H "Content-Type: application/xml" -d "<a/>" https://www.example.com/upload
418Event Logs kaydının Attacks sekmesine bakılır.
Attack area: Xml · Attack name: Block all XML contentsYöntem 2: WEB-CLI
- Nasıl çalışır Kutu WEB-CLI ile
--jsonBlockAll,--xmlBlockAllya da--formBlockAllalanına yazılır. - Nerede açılır WEB-CLI →
waf rule-parts - Gereksinim WEB-CLI erişimi
- vService tipi WAF açık HTTP vService
- Ön dolum farkı
addkomutunda…BlockAllvarsayılanı zaten açıktır; diğer alanlar da komutun varsayılanlarıyla yazılır
Adım adım yapılandırma
Varsayılan host grubunun kimliği defaultHost'tur; kural kimlikleri id sütununda, path'leri açıklama sütununda listelenir:
waf fw-rules list poolId <vService> hostGroupId defaultHostAçıklama sütununda xml: (all keys) görünen satır Xml ortak parçasıdır:
waf rule-parts list poolId <vService> hostGroupId defaultHost ruleId <kural>waf rule-parts update poolId <vService> hostGroupId defaultHost ruleId <kural> id <parça> --xmlBlockAll truewaf rule-parts add poolId <vService> hostGroupId defaultHost ruleId <kural> loc xml --xmlBlockAll trueDoğrulama
Parça yeniden görüntülenir.
Komut: waf rule-parts show poolId <vService> hostGroupId defaultHost ruleId <kural> <parça>
xmlBlockAll trueSık Yapılan Hatalar
- Kutuyu Any paths kuralında işaretlemek. Any paths kuralı, o bölüm için kendi ortak kuralı olmayan bütün path'lere uygulanır; o türde gövde kabul eden bütün sayfalar engellenir. Kutu yalnızca ilgili sayfa tipinde işaretlenir.
- Aggressive düzeyde Sync with default WAF rules ile Any paths'i yeniden kurmak. Sıkı şablonda JSON, Xml ve Form için Block All … Contents işaretlidir; kendi ortak kuralı olmayan path'lere gelen bu türdeki bütün gövdeler engellenir. Gövde kabul eden path'lerde bu bölümlerin ortak kuralı ayrıca tanımlanır (Sync with Default WAF Rules).
Content-Typegöndermeyen gövdeyi bu kutunun yakalamasını beklemek. Kutu türüContent-Type'tan okur; türü bildirilmeyen gövde Raw sekmesinin denetimlerine kalır (Raw sekmesi ne inceler; parse edilemeyen içerik ne olur?).- WEB-CLI'da başka bir amaçla
addyapıp kutuyu açık bırakmak.addkomutunda…BlockAllvarsayılanı açıktır; gövde kabul eden bir path'e JSON, Xml ya da Form parçası eklenirken--jsonBlockAll falsegibi açıkça kapatılır. - Metot kısıtıyla karıştırmak. Gövdeyi değil metodu kısıtlamak için Allowed Methods kullanılır (Bir sayfaya yalnızca belirli HTTP metotlarına izin verebilir miyim (Allowed Methods)?).
Dokümantasyonda nasıl yapılır
