Dosya yüklemede yalnızca belirli MIME tiplerine izin verebilir miyim?
Kısa cevap
Evet. Form sekmesinin ortak kuralındaki Allowed Upload Mime Types listesi, multipart/form-data gövdeyle yüklenen dosyaların izin verilen türlerini belirler. Tür, istemcinin bildirdiği Content-Type'tan değil dosyanın içeriğinden, gerektiğinde dosya adı uzantısıyla birlikte tespit edilir; liste girdileri tespit edilen türle alt dize olarak eşleşir (image girdisi bütün görsel türlerini kapsar) ve küçük harfle yazılır. Liste No restriction konumundayken kısıt yoktur; listeye uymayan her dosya Structure Policies kategorisinde 24 puanlık ihlal üretir ve kayıtta tespit edilen tür görünür. Any paths 14 türlük hazır listeyle gelir. Denetim Checks penceresindeki ana anahtarlardan bağımsızdır ve yalnızca ortak kuralda bulunur.
Sorun: Yükleme Formuna Beklenmeyen Dosya Türleri Geliyor
Bir yükleme formu yalnızca görsel ya da PDF kabul etmeli; çalıştırılabilir dosyalar, betikler ya da uzantısı değiştirilmiş dosyalar uygulamaya ulaşmamalı. İstemcinin bildirdiği Content-Type ve dosya adı kolayca değiştirilebildiğinden tür içerikten denetlenmek isteniyor.
Çözüm: İki Yöntem
İki yöntem aynı listeyi yazar; biri seçilir.
| Durumunuz | Uygun yöntem |
|---|---|
| Ayarı arayüzden yapmak istiyorum | Yöntem 1: Form ortak kuralı |
| Betik ya da komut satırıyla yapmak istiyorum | Yöntem 2: WEB-CLI |
Yöntem 1: Form Ortak Kuralı Önerilen
- Nasıl çalışır Multipart gövdedeki her dosyanın türü içerikten tespit edilir ve listedeki girdilerden birini içermiyorsa ihlal yazılır.
- Nerede açılır Left Monitor Panel → WAF-Protected vServices → vService → WAF Management → N page types → kural → Form → Add Common Rule for Form
- Gereksinim Ana anahtar gerekmez; host grubu Blocking ya da Monitor modunda
- vService tipi WAF açık HTTP vService
- Any paths varsayılanı
application/octet-stream,application/pdf,text/plain,text/csv,application/json,application/zip,image/jpeg,image/png,image/gif,image/webp,image/svg+xmlve üç Office Open XML türü
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).
Yükleme formunun gönderildiği path'in sayfa tipine 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?).
Panelin sekme şeridinde Form sekmesine tıklanır.
Add Common Rule for Form tıklanır; kural kendi Form ortak kuralına sahipse buton Edit Common Rule for Form olarak görünür (Add Common Rule for Form ekranı). Ekleme formu Any paths kuralının Form değerleriyle (14 türlük liste dahil) dolu açılır.
Allowed Upload Mime Types listesi Restrict konumunda tutulur; listeden izin verilmeyecek türler silinir ve gereken türler ayrı öğeler olarak eklenir (ör. image/png, image/jpeg, application/pdf). Girdiler küçük harfle yazılır; image gibi kısa bir girdi bütün görsel türlerini kapsar.
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.
Dosya içerikleri ayrıca imza taramasından geçer; bu tarama aynı formdaki OWASP Check in Upload kutusuyla yönetilir (Yüklenen dosyaların içeriği de taranıyor mu (OWASP Check in Upload)?).
Doğrulama
Host grubu Blocking modundayken listede olmayan türde bir dosya, uzantısı ve Content-Type'ı görsel gibi gösterilerek yüklenir.
Komut: curl -s -o /dev/null -w "%{http_code}\n" -F "dosya=@setup.exe;filename=resim.png;type=image/png" https://www.example.com/upload
418Event Logs kaydının Attacks sekmesine bakılır.
Attack name: Allowed upload mime types; Description: tespit edilen tür (ör. application/octet-stream)Yöntem 2: WEB-CLI
- Nasıl çalışır Liste WEB-CLI ile kuralın Form ortak parçasındaki
formAllowedMimeTypesalanı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
- Liste davranışı
--formAllowedMimeTypes.No sıradaki mevcut türün yerine geçer; yazılmayan sıralardaki türler listede kalır
Adım adım yapılandırma
Varsayılan host grubunun kimliği defaultHost'tur; kural kimlikleri id sütununda listelenir:
waf fw-rules list poolId <vService> hostGroupId defaultHostAçıklama sütununda form: (all keys) görünen satır Form ortak parçasıdır:
waf rule-parts list poolId <vService> hostGroupId defaultHost ruleId <kural>add komutunda formBlockAll varsayılanı açık olduğundan --formBlockAll false verilir; diğer alanlar komutun varsayılanlarıyla yazılır (formKeyCount ≤ 32, formBlockInvalid açık, valueLength 0–1024):
waf rule-parts add poolId <vService> hostGroupId defaultHost ruleId <kural> loc form --formBlockAll false --formAllowedMimeTypes.0 image/png --formAllowedMimeTypes.1 image/jpeg --formAllowedMimeTypes.2 application/pdfÇıktıdaki formAllowedMimeTypes.0 … satırları mevcut listedir:
waf rule-parts show poolId <vService> hostGroupId defaultHost ruleId <kural> <parça>Liste örneğin üç tür taşıyorsa yeni tür --formAllowedMimeTypes.3 ile eklenir; mevcut bir sıraya yazmak oradaki türü değiştirir:
waf rule-parts update poolId <vService> hostGroupId defaultHost ruleId <kural> id <parça> --formAllowedMimeTypes.3 image/webpDoğrulama
Parça yeniden görüntülenir.
Komut: waf rule-parts show poolId <vService> hostGroupId defaultHost ruleId <kural> <parça>
formAllowedMimeTypes satırlarında izinli türlerSık Yapılan Hatalar
image/*joker yazmak. Joker yoktur; girdi tespit edilen türde alt dize olarak aranır. Bütün görseller içinimageyazılır; bu girdiimage/svg+xmltürünü de kapsar.- Kısıtlı yükleme sayfasında
application/octet-streamgirdisini bırakmak. Tanınmayan ikili dosyalar ve.exedosyaları bu türle tespit edilir; Any paths listesinden gelen bu girdi, yalnızca belirli türlerin kabul edileceği sayfada listeden silinir. - Uzantıya ya da istemcinin
Content-Type'ına güvenmek. Tür içerikten tespit edilir; istemcinin bildirdiği tür denetime girmez (Dosya türü kontrolü istemcinin gönderdiği Content-Type'a mı, dosyanın içeriğine mi bakar?). - Tespit edilen adın istemcinin bildirdiği adla aynı olduğunu varsaymak. Bazı dosyalar farklı bir adla tespit edilir (ör.
.docxdosyasıapplication/msword). Engellenen meşru bir dosyanın tespit edilen türü ihlal kaydının Description alanında görülür; liste bu adla tamamlanır ya da kayıt Event Logs'tan öğretilir. - İşlenebilir boyutu aşan dosyalarda tür denetimi beklemek. Gövde işleme sınırını aşan gövdeler çözümlenmez; akıbetlerini Raw sekmesindeki Block Unparsed Contents belirler (Block Unparsed Contents ile Block Unexpected Parser Errors arasındaki fark nedir?).
Dokümantasyonda nasıl yapılır
