Çerez Güvenliği: HttpOnly, Secure ve SameSite
Güvenlik üzerinde çalışırken Çerez Güvenliği: HttpOnly, Secure ve SameSite konusunu doğru kavramak hem zaman kazandırır hem de ileride çıkabilecek sorunların önüne geçer. Aşağıda konunun özünü 5 başlık altında topladık.
Güvenlik üzerinde çalışırken Çerez Güvenliği: HttpOnly, Secure ve SameSite konusunu doğru kavramak hem zaman kazandırır hem de ileride çıkabilecek sorunların önüne geçer. Aşağıda konunun özünü 5 başlık altında topladık.
Temel kavram ve amaç
Oturum çerezi, kullanıcının kimliğinin ta kendisidir; onu ele geçiren kişi şifre bilmeden hesaba girer. Çerezin hangi koşullarda gönderileceğini ve JavaScript'ten okunup okunamayacağını belirleyen üç bayrak, XSS ve CSRF saldırılarının etkisini büyük ölçüde azaltır.
Kritik noktalar
- HttpOnly: Çerez JavaScript'ten okunamaz; sitede bir XSS açığı olsa bile oturum çerezi çalınamaz.
- Secure: Çerez yalnızca HTTPS bağlantısında gönderilir; açık Wi-Fi ağlarında dinlenerek ele geçirilmesi önlenir.
- SameSite=Lax: Başka bir siteden gönderilen formlarda çerez eklenmez; CSRF saldırılarına karşı ek bir katman oluşturur.
- Strict ve None: Strict, başka siteden gelen bağlantı tıklamalarında bile çerezi göndermez; None ise mutlaka Secure ile birlikte kullanılmalıdır.
- __Host- öneki: Adı __Host- ile başlayan çerez yalnız Secure, path=/ ve alan adı belirtilmeden ayarlanabilir; alt alan adlarından ezilemez.
PHP ile uygulama
Aşağıdaki PHP örneği, yukarıdaki noktaların gerçek bir kodda nasıl bir araya geldiğini gösteriyor:
// Oturum çerezi: session_start() çağrısından önce ayarlanır
session_set_cookie_params([
'lifetime' => 0, // tarayıcı kapanınca silinir
'path' => '/',
'secure' => true, // yalnız HTTPS üzerinden gönderilir
'httponly' => true, // document.cookie ile okunamaz
'samesite' => 'Lax', // başka siteden gelen POST isteklerine eklenmez
]);
ini_set('session.use_strict_mode', '1');
session_start();
// Kendi çerezleriniz için de aynı seçenekler
setcookie('tema', 'koyu', [
'expires' => time() + 60 * 60 * 24 * 365,
'path' => '/',
'secure' => true,
'httponly' => false, // JavaScript bu çerezi okuyacaksa
'samesite' => 'Lax',
]);Kodu doğrudan kopyalamak yerine her satırın ne yaptığını anlayarak uyarlamanız, ileride çıkacak hataları çözmeyi kolaylaştırır.
Kullanıcıdan gelen veriyi ekrana basarken htmlspecialchars() ile kaçışlamak XSS saldırılarının önüne geçer.
Avantajları
Bu yaklaşımı benimsediğinizde elde edeceğiniz başlıca faydalar:
- Saldırı yüzeyini daraltır ve olası veri sızıntılarının önüne geçer
- Güvenlik denetimlerinden daha kolay geçen bir kod tabanı sağlar
- Hataların canlı ortama çıkmadan fark edilmesine yardım eder
- Kullanıcı güvenini ve marka itibarını korur
Sonuç
Çerez Güvenliği: HttpOnly, Secure ve SameSite, küçük ama düzenli adımlarla ustalaşılan konulardan biri. Özellikle HttpOnly ve __Host- öneki başlıklarını uygulamaya geçirmek iyi bir başlangıç olur.
İlgili içerikler:
- Google Authenticator ile İki Adımlı Doğrulama (TOTP) Nasıl Çalışır?
- PHP PDO ile SQL Injection Koruması
- PHP ile Güvenli Dosya Yükleme: 8 Kontrol
Daha fazla uygulamalı içerik için Akademi derslerine ve blog yazılarına göz atabilirsiniz.
Yazar
Ferdi Giden @adminPHP, MySQL ve Tailwind ile kurumsal yazılımlar geliştiriyor; FerdiSoft çatısı altında ERP, WMS ve SaaS çözümleri üretiyor.