Bir sayfada yalnızca izin verdiğim query parametrelerinin gelmesini nasıl sağlarım (Allowed Query Parameters)?
Kısa cevap
Sayfa tipinin Query sekmesindeki ortak kuralda Allowed Query Parameters alanı Restrict konumuna alınır ve izin verilen parametre adları tek tek eklenir. Listede olmayan her farklı ad, Structure Policies kategorisinde 24 puanlık Allowed query parameters ihlali üretir; Blocking modunda istek engellenir, Monitor modunda yalnızca kaydedilir. Eşleştirme adın ham (URL kodlu) hâliyle, birebir ve büyük/küçük harfe duyarlı yapılır; bir ada değişken kuralı tanımlamak onu listeye eklemez. Denetim için Checks penceresinde Argument Checks açık olmalı ve liste Max. Allowed Arguments değerini (varsayılan 25) aşmamalıdır; aşan liste o kural için uygulanmaz.
Sorun: Sayfa Beklenmeyen Parametrelerle Çağrılıyor
Bir uç nokta yalnızca belirli parametreleri kabul ediyor; bunların dışındaki adlarla gelen istekler (parametre keşfi, gizli parametre ya da hata ayıklama bayrağı denemeleri) uygulamaya ulaşmamalı. İmza taraması bu istekleri yakalamaz, çünkü parametre adı saldırı deseni taşımaz.
Çözüm: İki Yöntem
İki yöntem aynı ayarı yazar; biri seçilir.
| Durumunuz | Uygun yöntem |
|---|---|
| Ayarı arayüzden yapmak istiyorum | Yöntem 1: Query ortak kuralı |
| Betik ya da komut satırıyla yapmak istiyorum | Yöntem 2: WEB-CLI |
Yöntem 1: Query Ortak Kuralı Önerilen
- Nasıl çalışır Sayfa tipinin Query bölümüne izinli ad listesi yazılır; listede olmayan her ad ihlal sayılır.
- Nerede açılır Left Monitor Panel → WAF-Protected vServices → vService → WAF Management → N page types → kural → Query → Add Common Rule for Query
- GereksinimArgument Checks açık; liste Max. Allowed Arguments değerinden uzun değil
- vService tipi WAF açık HTTP vService
- Etki alanı Yalnızca bu sayfa tipine eşleşen istekler; Any paths kuralına yazılan liste, kendi Query kuralı olmayan bütün path'lere uygulanır
Adım adım yapılandırma
Argument Checks WAF açıldığında açık gelir; kapatıldıysa Left Monitor Panel → WAF-Protected vServices → vService → WAF Management sekmesinde Inspection & Blocking bölümündeki Checks kartının sağ üstündeki kalem ikonu tıklanır (Checks Edit ekranı).
Argument Checks açık konuma alınır; altında Max. Allowed Arguments alanı görünür. Yazılacak liste bu değerden uzunsa değer artırılır (Max. Allowed Arguments ne işe yarar; bir sayfanın öğrenilmiş argüman listesi bu sayıyı aşarsa ne olur?).
Edit tıklanır.
WAF Management sekmesinde host grubunun N page types satırına tıklanır (Page Types ekranına erişim).
Listede sayfa tipinin satırına tıklanır; kuralın detay paneli sağda açılır (panele erişim). Sayfa tipi yoksa önce eklenir (Yeni bir page type'ı elle nasıl eklerim?).
Panelin sekme şeridinde Query sekmesine tıklanır.
Tablonun üstündeki Add Common Rule for Query tıklanır. Kural kendi Query ortak kuralına zaten sahipse buton Edit Common Rule for Query olarak görünür (Add Common Rule for Query ekranı). Ekleme formu Any paths kuralının Query değerleriyle dolu açılır; kayıttan sonra kural Query değerlerini Any paths'ten almaz.
Allowed Query Parameters anahtarı Restrict konumuna alınır ve her ad listeye ayrı bir öğe olarak eklenir. Ad istekte göründüğü ham hâliyle ve harf büyüklüğüne dikkat edilerek yazılır (ör. a%20b).
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. Kısıtı kaldırmak için aynı alan No Restriction konumuna alınır.
Doğrulama
Kuralın Query sekmesinde Allowed Query Parameters satırına bakılır.
Yazılan adlar virgülle listelenir; Rule source satırı yokturHost grubu Blocking modundayken listede olmayan bir parametreyle istek gönderilir.
Komut: curl -s -o /dev/null -w "%{http_code}\n" "https://www.example.com/arama?debug=1"
418vService'in Event Logs ekranında kayıt seçilip Attacks sekmesine bakılır.
Attack area: Query@debug · Attack name: Allowed query parametersYöntem 2: WEB-CLI
- Nasıl çalışır Yöntem 1'deki liste WEB-CLI ile kuralın Query ortak parçasına yazılır.
- Nerede açılır WEB-CLI →
waf rule-parts - Gereksinim WEB-CLI erişimi; Argument Checks açık
- vService tipi WAF açık HTTP vService
- Ön dolum farkı
addkomutu yazılmayan alanlara Any paths değerlerini değil komutun varsayılanlarını yazar
Adım adım yapılandırma
waf options update poolId <vService> --syncWithDefaultFwRules false --argumentChecks trueVarsayılan host grubunun kimliği defaultHost'tur. Kural kimlikleri id sütununda, path'leri açıklama sütununda listelenir (Any paths kuralı default rule olarak görünür):
waf fw-rules list poolId <vService> hostGroupId defaultHostAçıklama sütununda query: (all keys) görünen satır kuralın Query ortak parçasıdır:
waf rule-parts list poolId <vService> hostGroupId defaultHost ruleId <kural>add, yazılmayan alanlara komutun varsayılanlarını yazar (ör. queryKeyCount en çok 16, querySize en çok 8192, valueLength 0–1024); Any paths'teki sınırlar korunacaksa bu alanlar da komutta verilir (loc query alanları):
waf rule-parts add poolId <vService> hostGroupId defaultHost ruleId <kural> loc query --queryAllowedArgs.0 id --queryAllowedArgs.1 page<parça> yerine 3. adımdaki kimlik yazılır; çıktıdaki queryAllowedArgs.0, queryAllowedArgs.1 … satırları mevcut listedir:
waf rule-parts show poolId <vService> hostGroupId defaultHost ruleId <kural> <parça>--queryAllowedArgs.N o sıradaki mevcut adın yerine geçer; yeni ad ilk boş sıraya yazılır. Liste boşsa sıra 0'dır, iki ad varsa --queryAllowedArgs.2 kullanılır:
waf rule-parts update poolId <vService> hostGroupId defaultHost ruleId <kural> id <parça> --queryAllowedArgs.0 idDoğrulama
Parça yeniden görüntülenir.
Komut: waf rule-parts show poolId <vService> hostGroupId defaultHost ruleId <kural> <parça>
queryAllowedArgs satırlarında izinli adlarSık Yapılan Hatalar
- Adı çözülmüş biçimde yazmak. Eşleştirme adın ham (URL kodlu) hâliyle yapılır; istekte
a%20bolarak gelen ad listeye dea%20bolarak yazılır. - Listeyi Any paths kuralına yazmak. Any paths kuralının Query ortak kuralı, kendi Query kuralı olmayan bütün path'lere uygulanır; liste yalnızca kısıtlanacak sayfa tipine yazılır.
- Değişken kuralı eklemeyi izin sanmak. Değişken kuralı adın değerini denetler, adı Allowed Query Parameters listesine eklemez.
- Max. allowed arguments'tan uzun liste yazmak. Listedeki ad sayısı Max. Allowed Arguments değerini aşarsa liste o kural için uygulanmaz; değer listeden büyük tutulur (Max. Allowed Arguments ne işe yarar; bir sayfanın öğrenilmiş argüman listesi bu sayıyı aşarsa ne olur?).
- Argument checks kapalıyken listeyi aramak. Anahtar kapalıyken alan formda ve panelde gizlenir, denetim de uygulanmaz (Structure Checks ve Argument Checks ana anahtarları ne yapar; kapatırsam ne olur?).
- WEB-CLI'da
addile sınırları daraltmak.addkomutu Any paths değerleriyle doldurmaz; sorgu boyutu ve parametre sayısı gibi alanlar komutta verilmezse varsayılanlarla yazılır.
Dokümantasyonda nasıl yapılır
İlgili sorular
