Cookie Encryption
Cookie Encryption Aksiyonu Nedir?
Cookie Encryption aksiyonu, vService üzerinden geçen HTTP trafiğindeki çerezlerin (cookies) içeriklerini otomatik olarak şifreler. Kurum Servisi tarafından oluşturulan çerezler istemciye gönderilmeden önce şifrelenir, istemciden gelen isteklerdeki şifreli çerezler ise Kurum Servisine iletilmeden önce çözümlenir.
Set-Cookie: test=plain şifrelenirİstemciCookie: test=ENCRYPTED çözümlenirBackendBu aksiyon hem istek (request) hem de yanıt (response) aşamasında çalışır:
- Response: Kurum Servisinden dönen
Set-Cookiebaşlıklarındaki çerez değerleri şifrelenir. - Request: İstemciden gelen şifreli çerezler çözümlenerek Kurum Servisine iletilir.
Cookie Encryption Aksiyonunun Önemi
Çerezler, oturum bilgileri, kullanıcı tercihleri ve uygulama durumu gibi hassas verileri içerebilir. Bu verilerin istemci tarafında açık metin olarak saklanması güvenlik riskleri oluşturur.
Cookie Encryption aksiyonu;
- Çerez içeriklerinin istemci tarafında okunmasını engeller,
- Oturum bilgilerinin manipüle edilmesini önler,
- Hassas uygulama verilerinin korunmasını sağlar,
- Man-in-the-middle saldırılarında çerez içeriklerinin ifşa edilmesini zorlaştırır,
- Kurum Servisinde değişiklik gerektirmeden şifreleme sağlar.
Bu nedenle Cookie Encryption aksiyonu, hassas çerez verilerinin korunması için kritik bir güvenlik katmanıdır.
Kullanılabildiği vService Tipleri
Çalışma Anı
Nasıl Eklenir?
Yeni bir Cookie Encryption Aksiyonu, TR7 web yönetim arayüzü üzerinden aşağıdaki adımlar izlenerek eklenebilir:
- Sol altta bulunan TR7 logosuna tıklanarak Configuration Menu açılır.
- Load Balancer → Actions → Add adımları takip edilir.
- Aksiyon için benzersiz ve açıklayıcı bir isim girilir.
- Action Type olarak Cookie Encryption seçilir.
- Aksiyona ait ilgili konfigürasyonlar yapılandırılır.
Addbutonuna tıklanarak aksiyon eklenir.
Cookie Encryption Aksiyonu Ekleme Formu
Cookie Encryption Aksiyonu Ekleme Formu
INFO
Cookies to Encrypt
Şifrelenecek çerezlerin kapsamı bu alandan belirlenir.
Seçilen kapsam aksiyonun her iki yönünü birden belirler: yanıtta bu kapsamdaki çerezler şifrelenir, istekte de aynı kapsamdaki çerezler çözülür. Ayrı bir "çözülecek çerezler" ayarı bulunmaz.
All Cookies
Kurum Servisi tarafından oluşturulan tüm çerezler şifrelenir. Varsayılan kapsam budur.
All cookies, TR7'nin şifrelemediği çerezleri bozar
Kapsam istek yönüne de uygulandığından, All Cookies modunda istemciden gelen her çerez çözülmeye çalışılır. Ancak istekte gelen her çerez TR7'nin şifrelediği çerez değildir: JavaScript ile oluşturulan çerezler (document.cookie), üçüncü taraf/analitik çerezleri ve aksiyon etkinleştirilmeden önce verilmiş çerezler hiç şifrelenmemiştir.
TR7 bu çerezleri çözemez ve değerlerini FAILED_COOKIE_DECRYPTION sabit metniyle değiştirip Kurum Servisine öyle iletir:
İstemciden gelen: SESSIONID=U2FsdGVkX1...; _ga=GA1.2.884; theme=dark
Kurum Servisine giden: SESSIONID=abc123; _ga=FAILED_COOKIE_DECRYPTION; theme=FAILED_COOKIE_DECRYPTIONBu nedenle All Cookies yalnızca sitedeki tüm çerezler Kurum Servisi tarafından üretiliyorsa kullanılır. İstemci tarafında çerez üreten veya üçüncü taraf çerez taşıyan sitelerde Certain Cookies ile yalnızca Kurum Servisinin ürettiği çerezler adlandırılmalıdır; listede olmayan çerezlere dokunulmaz.
Certain Cookies
Yalnızca belirtilen isimlere sahip çerezler şifrelenir. Toggle'a tıklayarak Certain Cookies moduna geçilir.
Şifrelenmesi istenen çerez isimleri tek tek eklenir:
Certain cookies çerez isimleri
Certain cookies seçilip hiçbir çerez adı girilmezse, şifreleme işlemi yapılmaz
Certain Cookies moduna geçildiğinde listeye boş bir satır gelir. Bu satır doldurulmadan aksiyon kaydedilirse form uyarı vermez ve aksiyon sorunsuz oluşur; ancak çerez listesi tek bir boş addan ibaret kaldığı için hiçbir çerez bu adla eşleşmez ve hiçbir çerez şifrelenmez.
Bu nedenle Certain Cookies kullanılırken en az bir çerez adı girilmiş olmalıdır. Listedeki son satır silinemez; kapsam yeniden tüm çerezlere döndürülmek istendiğinde toggle All Cookies durumuna alınır.
Şifreleme Anahtarı ve Geçerlilik
Şifreleme anahtarı vService kimliğinden türetilir; bu değer cluster cihazlarının tamamında aynıdır ve yapılandırma yeniden yüklemelerinde, servis yeniden başlatmalarında değişmez: dolayısıyla şifreli çerezler bu işlemlerden etkilenmez. (vService silinip yeniden oluşturulursa daha önce verilmiş tüm şifreli çerezler geçersiz kalır.)
Çerez, istemciye bağlanır
Anahtar; vService kimliğinin yanı sıra istemcinin IP adresi ve User-Agent bilgisini de içerir. Bunun iki sonucu vardır:
- Güvenlik artısı: Çalınan bir çerez, farklı bir IP adresinden veya farklı bir tarayıcıdan çözülemez; çerez hırsızlığıyla oturum devralma pratikte engellenir.
- Dikkat edilmesi gereken: İstemcinin IP adresi veya
User-Agentbilgisi değişirse çerez çözülemez ve içerikFAILED_COOKIE_DECRYPTIONolarak Kurum Servisine iletilir; kullanıcı oturumu düşer. Mobil şebeke ile Wi-Fi arasında geçiş, operatör kaynaklı IP değişimi (CGNAT), proxy havuzları ve tarayıcı sürüm güncellemeleri bu durumu tetikleyebilir. Uzun ömürlü oturum çerezlerinde bu davranış göz önünde bulundurulmalıdır.
Şifreleme AES-256-CBC ile yapılır; şifreli değer, her çerez için rastgele üretilen bir tuz (salt) ile birlikte base64 biçiminde saklanır. Yanıt tarafında yalnızca çerezin ad=değer bölümü şifrelenir; Path, Domain, Secure, HttpOnly, SameSite gibi öznitelikler olduğu gibi korunur.
WARNING
Bu aksiyonun eklenmesi, değiştirilmesi veya silinmesi, yapılandırma uygulanırken ilgili vService'in yeniden başlatılmasını gerektirir; devam eden bağlantılar bu sırada etkilenebilir.
Şifreleme Örneği
Aşağıda, Kurum Servisi tarafından oluşturulan test_cookie adlı çerezin şifreleme öncesi ve sonrası görünümü yer almaktadır.
Şifreleme öncesi:
Şifreleme öncesi
Şifreleme sonrası:
Şifreleme sonrası
Şifrelenmiş çerez değeri, istemci tarafından okunamaz ve manipüle edilemez hale gelir.
INFO
Form Butonları
Add
Add butonuna tıklanarak aksiyon ekleme işlemi tamamlanır.
Add & Repeat
Add & Repeat butonu ile aksiyon ekleme işlemi tamamlanır ve farklı konfigürasyonlarla ilgili pencereden çıkılmadan yeni bir aksiyon daha eklenebilir.
Aksiyon Eklendi
WARNING
Cookie Encryption aksiyonu koşul gerektirmez ve tanımlandığı vService üzerinde koşulsuz (Always) olarak uygulanır.
Koşulsuz çalışan aksiyonlar, trafik içeriğine bağlı değerlendirme yapmadan, ilgili vService üzerindeki tüm trafiği veya davranışı doğrudan etkiler.
Canlı ortamlarda, bu tür aksiyonların devreye alınması öncesinde hedef servis davranışlarının ve olası etkilerin dikkatle değerlendirilmesi önerilir. Aksi durumda, beklenmeyen servis davranışları veya operasyonel sorunlar oluşabilir.
WARNING
vService başına yalnızca bir Cookie Encryption aksiyonu eklenebilir.
Operasyonel ve Güvenli Kullanım Önerileri
- Hassas Çerezleri Hedefleyin. Tüm çerezleri şifrelemek yerine, yalnızca hassas verileri içeren çerezleri (oturum ID'leri, kullanıcı bilgileri vb.) Certain Cookies ile adlandırmak hem performans açısından daha verimlidir hem de TR7'nin şifrelemediği çerezlerin (JavaScript ile üretilen, üçüncü taraf) bozulmasını önler.
- Devreye Alma Anını Seçin. Aksiyon etkinleştirilmeden önce istemcilere verilmiş çerezler şifresizdir ve artık çözülemez; devreye alma, o an açık olan oturumların düşmesi anlamına gelir. Geçiş için düşük trafikli bir zaman aralığı tercih edilmelidir.
- HTTP Cookie Security ile Birlikte Kullanın. Çerez şifreleme, HTTP Cookie Security aksiyonu ile birlikte kullanıldığında maksimum koruma sağlar. Şifreleme içeriği korurken, Secure/HttpOnly/SameSite öznitelikleri erişimi kontrol eder.
- Uygulama uyumluluğu test edilir. Bazı uygulamalar çerez değerlerini JavaScript ile okur; şifreleme sonrasında bu işlevsellik etkilenebilir. Değişiklik, canlı ortama alınmadan önce test edilir.
- Çerez Boyutu Sınırlarını Göz Önünde Bulundurun. Şifreleme, çerez değerinin boyutunu artırır. Tarayıcıların çerez boyutu sınırları (genellikle 4KB) aşılmamalıdır.
Canlı Ortamlarda Yaygın Kullanım Senaryoları
Aşağıdaki örnekler, ilgili aksiyonun gerçek sistemlerde en sık karşılaşılan kullanım senaryolarında nasıl uygulandığını göstermektedir. Bu senaryolar, canlı ortamlarda yaygın olarak tercih edilen ve sahada edinilmiş deneyimlere dayanan pratikleri temel alır.
Senaryo 1: Oturum Çerezlerini Şifreleme
Problem: Web uygulaması oturum bilgilerini SESSIONID ve auth_token çerezlerinde saklıyor. Saldırganlar browser developer tools veya network sniffing ile bu çerezleri okuyarak oturum çalma (session hijacking) saldırısı yapabiliyor.
Çözüm: Oturum çerezleri şifrelenerek istemci tarafında okunamaz hâle getirilir ve oturum güvenliği artırılır.
Konfigürasyon:
- Cookies to Encrypt: Certain Cookies
- Cookies to Encrypt listesindeki satırlar:
SESSIONID,JSESSIONID,session_token,auth_token
Sonuç:
- ✅ Oturum çerezleri → Şifrelenmiş formatta istemciye gönderilir, browser'da okunamaz.
- ✅ Güvenlik → Oturum çalma saldırıları zorlaşır, çerez değerleri manipüle edilemez.
- ✅ Kurum Servisi → Hiçbir kod değişikliği gerekmez, TR7 şifreleme/deşifreleme işlemini yapar.
Senaryo 2: E-Ticaret Sepet Verilerini Koruma
Problem: E-ticaret sitesi alışveriş sepeti bilgilerini cart_data çerezinde saklıyor. Kullanıcılar browser console'dan bu çerezi okuyup fiyat bilgilerini değiştirerek indirimli alışveriş yapmaya çalışıyor.
Çözüm: Sepet verileri ve kullanıcı tercihlerini içeren çerezler şifrelenerek manipülasyon engellenir.
Konfigürasyon:
- Cookies to Encrypt: Certain Cookies
- Cookie Names:
cart_data,user_prefs,user_profile,discount_code
Sonuç:
- ✅ Sepet çerezleri → Şifrelenir, kullanıcı fiyat veya ürün bilgilerini değiştiremez.
- ✅ Veri bütünlüğü → Sepet manipülasyonu engellenir, doğru fiyatlandırma korunur.
- ❌ Tracking çerezleri → Şifrelenmez, analytics ve performans etkilenmez.
Senaryo 3: PHP Uygulaması Güvenliği (Legacy)
Problem: Eski bir PHP uygulaması PHPSESSID, user_id ve role çerezlerinde hassas bilgiler tutuyor. Uygulama kodunu değiştirmek zaman alıcı ve riskli ama çerez güvenliği artırılmalı.
Çözüm: Kurum Servisinde kod değişikliği yapmadan TR7 üzerinden hassas çerezleri şifreleyin.
Konfigürasyon:
- Cookies to Encrypt: Certain Cookies
- Cookie Names:
PHPSESSID,user_id,role,permissions
Sonuç:
- ✅ Hassas çerezler → Şifrelenir, kullanıcı rolü ve yetki bilgileri korunur.
- ✅ Kurum Servisi → Hiçbir kod değişikliği yapılmadan güvenlik artırılır.
- ❌ Görsel tercih çerezleri (language, theme) → Şifrelenmez, JavaScript uyumluluğu korunur.
Senaryo 4: Tüm Çerezlerin Şifrelenmesi (All Cookies)
Problem: Bankacılık veya sağlık uygulaması çok hassas veri işliyor ve uyumluluk standartları (PCI-DSS, KVKK) tüm çerez verilerinin korunmasını gerektiriyor. Hangi çerezlerin hassas olduğunu tek tek belirlemek zor.
Ön kontrol: Bu senaryo, sitedeki tüm çerezlerin Kurum Servisi tarafından üretilmesi koşuluna bağlıdır. Uygulama JavaScript ile çerez oluşturuyorsa veya sayfada üçüncü taraf/analitik çerezleri varsa All Cookies kullanılmaz: bu çerezler şifrelenmediği hâlde çözülmeye çalışılır ve Kurum Servisine bozuk değerle ulaşır. Böyle bir durumda Senaryo 1'deki gibi Certain Cookies ile çerez adları sayılır.
Çözüm: Koşul sağlanıyorsa kapsam All Cookies bırakılır; Kurum Servisinin ürettiği hiçbir çerez açık metin olarak istemciye gitmez.
Konfigürasyon:
- Cookies to Encrypt: All Cookies
Sonuç:
- ✅ Tüm çerezler → Kurum Servisinin ürettiği her çerez otomatik olarak şifrelenir, çerez adı tek tek sayılmaz.
- ✅ Uyumluluk → PCI-DSS, KVKK, HIPAA gereksinimlerini karşılar.
- ❌ İstemci tarafı çerezler → JavaScript ile üretilen veya üçüncü taraf çerez bulunan sitelerde bu kapsam kullanılmaz.
