Hassas verilerin (kredi kartı, TC kimlik) yanıtta dışarı sızmasını engelleyebilir miyim?
Kısa cevap
Evet, iki yolla. Değeri gizleyip yanıtı göndermek için Modify Response Content aksiyonunun Mask türü kullanılır; Built-in Mask Regexes listesinde TC ID. NO ve Credit card desenleri hazırdır. Hassas veri içeren yanıtın hiç gönderilmemesi isteniyorsa HTTP Response Body koşulu yanıt gövdesinin ilk bölümünde (en fazla 16384 bayt) deseni arar ve Execution Level On response olan Block ya da Show Content aksiyonu asıl yanıtın yerine hata ya da bilgi sayfası döndürür. WAF yanıtları denetlemez; bu iş Load Balancer aksiyonlarıyla yapılır.
Sorun: Uygulama Yanıtlarında Hassas Veri Görünüyor
Hatalı bir sorgu, hata sayfası ya da eksik yetki denetimi nedeniyle uygulama yanıtında kredi kartı ya da TC kimlik numarası dışarı çıkabilir. Bu verinin istemciye ulaşmadan gizlenmesi ya da yanıtın hiç gönderilmemesi istenir. Her iki yöntem de bir önlem katmanıdır; verinin kaynağında düzeltilmesi gerekir.
Çözüm: İki Yöntem
İki yöntem birbirinin alternatifidir: biri yanıtı değiştirip gönderir, diğeri yanıtı hiç göndermez.
| Durumunuz | Uygun yöntem |
|---|---|
| Sayfa açılmaya devam etsin, yalnızca değer gizlensin | Yöntem 1: Modify Response Content → Mask |
| Hassas veri içeren yanıt hiç gönderilmesin | Yöntem 2: HTTP Response Body + Block / Show content |
Yöntem 1: Modify Response Content → Mask Önerilen
- Nasıl çalışır Yanıt gövdesinde Mask Query desenine uyan metinler Masking Character ile değiştirilir; uzunluk korunur ve yanıt istemciye gönderilir.
- Nerede açılırLoad Balancer → Actions → Modify Response Content → Modify Type = Mask
- Gereksinim Yok
- vService tipi HTTP (aksiyon yalnızca yanıt aşamasında çalışır)
Adım adım yapılandırma
Load Balancer → Actions → Add ile aksiyon formu açılır (nasıl eklenir).
Action Name = tc-maske, Action Type = Modify Response Content, Modify Type = Mask seçilir. Query type varsayılan RegEx bırakılır; Built-in mask regexes altında TC ID. NO (ya da Credit card) tıklanarak desen Mask Query alanına eklenir. Masking Character varsayılan * bırakılır. Masking Tolerance varsayılan 1 olduğundan eşleşmenin ilk ve son karakteri açık kalır (12345678901 → 1*********1); değerin tamamı gizlenecekse 0 girilir.
Aksiyon Add ile kaydedilir. Belirli sayfalarla sınırlamak için Conditions alanında koşul seçilebilir.
Load Balancer → Load Balancer vService List ekranında HTTP vService seçilip Edit ile düzenleme formu açılır.
Details → Actions alanında tc-maske seçilir.
Form Save ile kaydedilir. Diğer alanlar (Omitted characters, Masking tolerance, Min. Occurrences for Masking) ve HTML ekleme / içerik değiştirme türleri için: Yanıt gövdesini değiştirebilir miyim (ör. HTML'e script eklemek, TC kimlik / kart numarası maskelemek)?
Doğrulama
Hassas veri dönen sayfa açılır ya da curl -s https://www.example.com/profil çıktısına bakılır.
1*********1Yöntem 2: HTTP Response Body + Block / Show Content
- Nasıl çalışır TR7 yanıtı istemciye iletmeden önce Body Size to Parse(Bytes) kadar bayt toplanana dek en fazla 500 ms bekletir ve koşul bu bölümde deseni arar; eşleşince yanıt aşamasında çalışan Block ya da Show content asıl yanıtın yerine geçer.
- Nerede açılırLoad Balancer → Conditions → HTTP Response Body · Load Balancer → Actions → Block / Show Content
- Gereksinim vService'te sıkıştırma profili kapalı olmalıdır (TR7 bu koşul için sıkıştırmayı kendiliğinden kapatmaz).
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Conditions → Add ile koşul formu açılır (nasıl eklenir).
Condition Name = tc-yanit, Criteria = HTTP Response Body, eşleştirme Regex seçilir; Query alanına TC kimlik için \b[0-9]{11}\b ya da kart numarası için \b[0-9]{4}[ -]?[0-9]{4}[ -]?[0-9]{4}[ -]?[0-9]{4}\b yazılır ve Body Size to Parse(Bytes) (en fazla 16384) girilir. TC deseni 11 haneli her sayıyı (ör. telefon numarası) yakalar; desen ve kapsam dar tutulur.
Koşul Add ile kaydedilir.
Load Balancer → Actions → Add ile aksiyon formu açılır.
Action Name = tc-yanit-engel, Action Type = Block, Execution Level = On Response seçilir; Deny Type varsayılan Standard bırakılır ve Status Code = 500 seçilir. Hata yerine bilgi sayfası gösterilecekse Show content seçilir, Execution level = On response yapılır ve sayfa ile durum kodu seçilir.
Conditions alanında tc-yanit seçilir; görsel ve dosya yanıtlarını taramamak için aynı grupta bir yol koşulu and ile eklenebilir.
Aksiyon Add ile kaydedilir.
HTTP vService Edit ile açılır.
Details → Actions alanında tc-yanit-engel seçilir. Details altındaki Compression kutusu işaretliyse işareti kaldırılır.
Form Save ile kaydedilir. Compression işareti kaldırıldıysa kayıtta vService yeniden başlatılır ve açık bağlantılar kısa süre kesilir. Cluster'da değişiklik varsayılan olarak eş cihaza otomatik aktarılır; Manual Sync Mode açıksa Synchronize ile gönderilir.
Doğrulama
Komut: curl -s -o /dev/null -w '%{http_code}' https://www.example.com/profil
500Hassas veri içermeyen bir sayfa aynı komutla istenir.
200Sık Yapılan Hatalar
- Maskelemeyi tek koruma sanmak. Veri Kurum Servisinde ve uygulama loglarında açık kalır; kaynağında düzeltilmelidir.
- Sıkıştırılmış yanıtta desen aramak. HTTP Response Body koşulu sıkıştırılmış içerikte güvenilir eşleşmez; vService'te sıkıştırma kapalı olmalıdır (operasyonel öneriler).
- Koşulu bütün yanıtlara uygulamak. Görsel ve dosya yanıtları da taranır ve her yanıt 500 ms'ye kadar bekletilebilir; yol koşuluyla daraltılır.
- WAF'ın yanıtı denetleyeceğini sanmak. WAF istekleri denetler; yanıt içeriği Load Balancer aksiyonlarıyla ele alınır.
Dokümantasyonda nasıl yapılır
