Hastanenin acil triyaj ve laboratuvar servisini gözünüzün önüne getirin. Sabah 08:00'de acile göğüs ağrısıyla başvuran Mehmet Bey'in kan tahlilleri, EKG grafisi ve T.C. kimlik numarasıyla bir acil durum raporu basılır. Şimdi triyajdaki memurun, "İşlerimiz çok yoğun, her hastaya ayrı tahlil kağıdı basmakla vakit kaybetmeyelim, tonerden tasarruf edelim" diyerek Mehmet Bey'in tahlil raporunu fotokopi makinesine koyduğunu ve gün boyunca acile giren sonraki 500 hastanın eline Mehmet Bey'in adının, T.C. kimlik numarasının ve kardiyak troponin değerlerinin basılı olduğu o fotokopiyi tutuşturduğunu hayal edin. Ayşe Hanım elindeki raporla kardiyolojiye sevk edilir, hekim raporu okuyup Ayşe Hanım'ı acilen yoğun bakıma yatırmaya çalışır; Ayşe Hanım ise "Ben sadece boğaz ağrısı için gelmiştim, bu Mehmet Bey kim?" diye çığlık atar. Hastane için bu sahne hem tıbbi bir cinayet girişimi hem de en ağır hasta mahremiyeti ihlalidir.

Web mimarisinde CDN ve önbellekleme (caching) katmanlarını yönetirken yapılan en vahim hata da tam olarak budur. Cloudflare, Varnish, Fastly veya Nginx üzerinde "Sitemiz jet gibi açılsın, sunucunun yükü sıfırlansın" hevesiyle bilinçsizce yazılan bir "Cache Everything" (Her Şeyi Önbelleğe Al) kuralı; bir e-ticaret sitesini veya kullanıcı portalını anında kitlesel bir Kişisel Verileri Koruma Kanunu (KVKK / GDPR) skandalına dönüştürür.


CDN Mantığı: Statik Varlıklar vs. Dinamik Oturumlar

İçerik Dağıtım Ağları (CDN), web sitelerinin hızını artırmak için harika araçlardır. Mimarinin temel varoluş sebebi statik dosyaları (CSS, JS, PNG, JPG, WebP, Font dosyaları) kullanıcının coğrafi konumuna en yakın uç sunucuda (Edge Server) saklamak ve ana kaynak sunucuya (Origin Server) binen yükü azaltmaktır.

Varsayılan ayarlarda Cloudflare akıllıdır; yalnızca bilinen statik dosya uzantılarını önbelleğe alır. HTML çıktılarını, dinamik PHP/Node.js yanıtlarını asla hafızasında dondurmaz.

Fakat sistem yöneticisi veya pazarlama ekibi Google PageSpeed skorlarında "100/100" görmek veya zayıf VPS sunucusunun CPU kullanımını düşürmek istediğinde YouTube'da izlediği yarım yamalak bir tavsiyeye uyar:
"Cloudflare Page Rules'a girin, URL desenine *example.com/* yazın ve Cache Level seçeneğini 'Cache Everything' yapın! Siteniz roket gibi uçacak!"

Evet; site gerçekten uçuşa geçer. Sunucu CPU kullanımı %5'e düşer, yanıt süreleri 15 milisaniyeye iner. Ancak sitenin arkasında dönen dehşeti kimse fark etmemiştir.


Patolojinin Gelişimi: Oturum Sızıntısı (Session Bleed)

Dinamik bir web uygulamasında kullanıcının kimliği HTTP başlıkları (özellikle Cookie ve Set-Cookie) ve sunucu tarafı oturumları (session) ile yönetilir:

+------------------------------------------------------------------------+
|                   HATALI ÖNBELLEKLEME SENARYOSU                        |
|                                                                        |
|  1. Kullanıcı A (Ali Bey) siteye giriş yapar.                          |
|  2. Sunucu Ali Bey için dinamik bir HTML üretir:                       |
|     - Header: Set-Cookie: PHPSESSID=ali_oturum_token_123               |
|     - HTML Body: "Hoş geldiniz Ali Bey! Sepetiniz: 2 Ürün (1.450 TL)"  |
|                                                                        |
|  3. Cloudflare Edge Sunucusu "Cache Everything" gereği bu HTML'i ve    |
|     tüm HTTP başlıklarını hafızasına kopyalar!                         |
|                                                                        |
|  4. Kullanıcı B (Ayşe Hanım) siteye girer (`example.com/hesabim`).     |
|  5. Cloudflare isteği kaynak sunucuya GÖNDERMEZ!                        |
|     Hafızasındaki Ali Bey'in HTML'ini ve çerezini Ayşe Hanım'a verir!  |
|                                                                        |
|  6. Ayşe Hanım ekranda şunu görür:                                     |
|     "Hoş geldiniz Ali Bey! Kayıtlı Kartınız: **** 4412"                |
|     "Teslimat Adresi: Kadıköy / İstanbul"                              |
+------------------------------------------------------------------------+

Bu aşamada Ayşe Hanım sadece Ali Bey'in adını ve sepetini görmekle kalmaz; Ali Bey'in oturum çerezine sahip olduğu için Ali Bey'in adına sipariş verebilir, kayıtlı adresini silebilir veya hesabın şifresini değiştirebilir.

Bir saat içinde siteye giren binlerce kullanıcı, önbelleğin süresi dolana kadar (Edge Cache TTL) o ilk şanssız kullanıcının kimliğiyle işlem yapar.


E-Ticarette Yaşanan Tipik Semptomlar

Böyle bir felaket patlak verdiğinde müşteri hizmetleri santrali dakikalar içinde kilitlenir:

  1. Sepetlerin Birbirine Karışması:
    Bir müşteri sepete bir mont ekler. Başka bir şehirdeki müşteri sayfayı yenilediğinde sepette o montu görür. Kendi sepetini boşalttığında diğer müşterinin sepeti de boşalır.
  2. Kişisel Veri İfşası:
    Sitenin /profil veya /siparislerim sayfası önbelleğe alındığı için kullanıcıların T.C. kimlik numaraları, açık ev adresleri, telefonları ve son sipariş detayları kamuya açık hale gelir.
  3. Kredi Kartı Formlarının Bozulması:
    Ödeme sayfalarında kullanılan anti-CSRF token'ları tek bir kullanıcı için üretilip önbelleğe alındığından, diğer kullanıcıların ödeme denemeleri "CSRF Token Mismatch" veya "Oturum Doğrulanamadı" hatasıyla çöker. Satışlar aniden bıçak gibi kesilir.

Nerede Hata Yapıldı? Cache-Control ve Edge Kuralları

Bu patolojinin sorumlusu Cloudflare değil; HTTP önbellek başlıklarını ve CDN kurallarını anlamayan mimari tasarımdır.

1. Kaynak Sunucu Cache-Control: private, no-store Göndermedi

Modern bir arka yüz (backend) uygulaması, oturuma duyarlı veya kişisel veri içeren sayfalarda HTTP başlığını şu şekilde basmak zorundadır:

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Cache-Control: no-store, no-cache, must-revalidate, max-age=0
Pragma: no-cache
Expires: Wed, 11 Jan 1984 05:00:00 GMT

no-store direktifi, yol boyunca hiçbir vekil sunucunun (proxy), tarayıcının veya CDN'in bu yanıtı belleğe yazamayacağını emreder. Ancak Cloudflare'da "Edge Cache TTL" kuralında "Override origin and use cache" (Kaynak başlıklarını yok say ve önbelleğe al) seçeneği işaretlenirse, Cloudflare kaynak sunucunun bu feryadını çiğner ve sayfayı zorla dondurur.

2. Dinamik ile Statik Ayrımı Yapılmadı

HTML önbelleklemek (HTML Caching) mümkündür ve yüksek trafikli haber sitelerinde, bloglarda mükemmel sonuç verir. Ancak bu işlem şu katı kurallara bağlanmalıdır:

  • Misafir (Guest) vs. Giriş Yapmış (Logged-in) Ayrımı:
    Eğer kullanıcı oturum açtıysa (Cookie: wordpress_logged_in_*, Cookie: PHPSESSID, Cookie: connect.sid), önbellek mekanizması anında devre dışı kalmalıdır (Bypass Cache on Cookie).
  • Sepet Kontrolü:
    E-ticaret sitelerinde sepet çerezi (woocommerce_items_in_cart vb.) varsa önbellek asla tetiklenmemelidir.
  • Kişisel Sayfaların İstisna Tutulması:
    /hesabim/*, /sepet/*, /odeme/*, /api/*, /admin/* yolları CDN seviyesinde açıkça Bypass Cache kuralına bağlanmalıdır.

Doğru Cloudflare Kural Mimarisi

Bir e-ticaret veya kullanıcı girişi olan platformda Cloudflare Page Rules veya Cache Rules yapılandırılırken izlenmesi gereken cerrahi sıra şudur:

[Kural 1 - En Yüksek Öncelik]
URL: *example.com/hesabim*
URL: *example.com/sepet*
URL: *example.com/odeme*
Aksiyon: Cache Level -> Bypass (Asla Önbelleğe Alma!)

[Kural 2 - Çerez Bazlı Baypas (Kurumsal Plan veya Cache Rules)]
Eğer HTTP Cookie şu değeri içeriyorsa: "session" VEYA "logged_in" VEYA "cart"
Aksiyon: Bypass Cache

[Kural 3 - Yalnızca Statik Varlıklar ve Genel Sayfalar]
URL: *example.com/blog/* (Yalnızca herkese açık içerik)
Aksiyon: Cache Everything
Edge Cache TTL: 4 hours

Eğer ücretsiz veya giriş seviyesi Cloudflare planı kullanıyorsanız ve çerez bazlı dinamik baypas yapamıyorsanız; HTML sayfaları için asla "Cache Everything" açmayın! Varsayılan Standard önbellek seviyesinde kalın; Cloudflare yalnızca resimleri, CSS ve JS dosyalarını önbelleğe alsın, HTML üretimi kaynak sunucuda kalsın.


Hukuki ve Kurumsal Fatura: KVKK Seviye 1 Felaketi

Böyle bir olay yaşandığında sistem yöneticisinin ilk refleksi Cloudflare'a girip Purge Everything butonuna basmaktır. Evet, anlık olarak sızıntı durur; ancak hukuki süreç yeni başlamıştır.

6698 sayılı Kişisel Verilerin Korunması Kanunu'na (KVKK) ve Avrupa'daki GDPR düzenlemelerine göre:

  • Veri ihlali tespit edildiği andan itibaren en geç 72 saat içinde Kişisel Verileri Koruma Kurulu'na resmi bildirim yapılmalıdır.
  • Hangi kullanıcıların verilerinin başka kullanıcılar tarafından görüntülendiği Cloudflare ve Nginx loglarından adli bilişim düzeyinde tespit edilmeli, etkilenen tüm kullanıcılara bilgilendirme e-postası atılmalıdır.
  • Bu ihmalin kuruma faturası milyonlarca liralık idari para cezaları ve telafisi imkânsız bir itibar kaybıdır.

Sonuç

Önbellekleme, susamış bir hastaya serum vermek gibidir; doğru dozda ve doğru damardan verildiğinde hayat kurtarır. Ancak ilacın farmakolojisini bilmeden tüm vanaları sonuna kadar açarsanız, hastayı hipervolemik şoka sokup boğarsınız.

"Cache Everything" bir hız hilesi değil; dikkatle yönetilmesi gereken yüksek riskli bir mühendislik kararıdır. Hangi verinin herkese açık, hangi verinin kişiye özel olduğunu ayırt edemeyen bir altyapı; hızlı bir web sitesi değil, patlamış bir gizlilik lağımı üretir.