Siber Güvenlik

Web Sitesi Güvenliği: SSL, Güvenlik Başlıkları, WAF ve KVKK Uyumu

Web sitenizi korumanın teknik yol haritası: HTTPS ve HSTS, güvenlik başlıkları, WAF, form güvenliği, XSS/SQL injection önleme, yedekleme ve KVKK uyumu.

Web sitesi güvenliği: SSL sertifikası ve güvenlik başlıkları

Özetle

  • HTTPS zorunlu başlangıçtır ama tek başına yeterli değildir; asıl riskler uygulama katmanındadır.
  • Güvenlik başlıkları (CSP, HSTS, X-Content-Type-Options) birkaç satırla büyük bir saldırı yüzeyini kapatır.
  • SQL injection ve XSS, hâlâ en yaygın iki açıktır; ikisinin de çözümü disiplinli kodlamadır.
  • Form toplayan her site KVKK kapsamındadır: aydınlatma metni, açık rıza ve saklama süresi şart.

Bir web sitesi yayına alındığı andan itibaren, internetteki otomatik tarayıcıların hedef listesine girer. “Sitemizde kritik bir şey yok” demek koruma sağlamaz: saldırganın işine yarayan şey çoğu zaman verinizden çok sunucunuz, alan adınızın itibarı ve ziyaretçilerinizdir. Bu rehber, bir sitenin güvenliğini teknik olarak sıraya koyuyor.

1. HTTPS ve HSTS: temeli doğru atın

HTTPS, ziyaretçi ile sunucu arasındaki trafiği şifreler; form verilerinin ve oturum çerezlerinin yol üzerinde okunmasını engeller. Bugün bir sitenin HTTPS’siz yayınlanması hem güvenlik hem SEO açısından kabul edilemez — tarayıcılar “Güvenli değil” uyarısı gösterir, arama motorları da güvenli bağlantıyı olumlu sinyal sayar.

Doğru kurulum

  • Sertifikayı kurun (Let’s Encrypt ücretsizdir ve şifreleme gücü ücretli sertifikalarla aynıdır).
  • HTTP’den HTTPS’e 301 kalıcı yönlendirme yapın.
  • www ve www’siz sürümlerden birini seçip diğerini yönlendirin; canonical etiketiyle de teyit edin.
  • Karma içerik (mixed content) bırakmayın: sayfa HTTPS iken içindeki görsel/script HTTP olmamalı.
  • Yalnızca HTTPS ile yayındaysanız HSTS başlığını açın.
Dikkat

HSTS geri alınması zor bir karardır: tarayıcı, belirttiğiniz süre boyunca siteye yalnızca HTTPS ile bağlanmayı dener. Sertifikanız kesintiye uğrarsa site erişilemez görünür. Önce kısa max-age ile başlayın.

2. Güvenlik başlıkları

Sunucunun gönderdiği birkaç HTTP başlığı, tarayıcıya sitenizi nasıl koruyacağını söyler. Apache kullanıyorsanız .htaccess dosyasına eklenir:

<IfModule mod_headers.c>
  Header always set X-Content-Type-Options "nosniff"
  Header always set X-Frame-Options "SAMEORIGIN"
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
  Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"
  Header always set Content-Security-Policy "default-src 'self'; img-src 'self' data:; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'self'"
  # Yalnızca tam HTTPS yayındaysanız:
  # Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>
BaşlıkNeyi engeller
Content-Security-PolicyYabancı kaynaktan script yüklenmesi, XSS’in etkisinin büyümesi
X-Content-Type-OptionsTarayıcının dosya türünü tahmin ederek zararlı içerik çalıştırması
X-Frame-Options / frame-ancestorsSitenizin başka bir sayfada iframe’e alınması (clickjacking)
Referrer-PolicyAdres satırındaki hassas bilginin dış sitelere sızması
Permissions-PolicyKamera, mikrofon, konum gibi izinlerin gereksiz istenmesi
Strict-Transport-SecurityHTTPS’ten HTTP’ye düşürme saldırıları

3. Uygulama katmanı: asıl savaş burada

SQL injection

Kullanıcıdan gelen verinin doğrudan SQL sorgusuna eklenmesiyle oluşur; veritabanının tamamının okunmasına yol açabilir. Tek gerçek çözüm hazırlanmış ifadeler (prepared statements) kullanmaktır:

// Yanlış — kullanıcı girdisi sorguya yapıştırılıyor
$sql = "SELECT * FROM musteriler WHERE email = '" . $_POST['email'] . "'";

// Doğru — parametre bağlama
$stmt = $pdo->prepare('SELECT * FROM musteriler WHERE email = ?');
$stmt->execute([$_POST['email']]);

XSS (siteler arası betik çalıştırma)

Kullanıcıdan gelen metnin sayfaya olduğu gibi basılmasıyla oluşur; ziyaretçinin oturumu çalınabilir. Kural basittir: gelen veriyi doğrula, giden veriyi kaçışla.

// Ekrana basmadan önce her zaman kaçışlayın
echo htmlspecialchars($ad, ENT_QUOTES, 'UTF-8');

CSRF (istek sahteciliği)

Oturumu açık kullanıcının farkında olmadan bir işlem yapmasını sağlar. Her form için tek kullanımlık token üretin ve gönderimde doğrulayın; oturum çerezlerini SameSite=Lax; Secure; HttpOnly ile işaretleyin.

Dosya yükleme

Ziyaretçinin dosya yüklediği her alan, en riskli noktadır. Uzantıya değil gerçek MIME türüne bakın, dosya adını kendiniz yeniden üretin, boyut sınırı koyun ve yükleme klasöründe çalıştırmayı kapatın.

Form ve bot koruması

İletişim formlarında honeypot alanı, gönderim hız sınırı (rate limit) ve sunucu tarafı doğrulama kullanın. E-posta başlıklarına satır sonu karakteri enjekte edilmesini engelleyin — aksi hâlde formunuz spam gönderim aracına dönüşebilir.

4. WAF ve kenar koruma

Web Application Firewall (WAF), sitenize gelen trafiği süzerek bilinen saldırı kalıplarını uygulamaya ulaşmadan engeller. Küçük ve orta ölçekli siteler için pratik seçenekler:

  • CDN tabanlı WAF (Cloudflare vb.): kurulumu alan adı yönlendirmesiyle yapılır; DDoS koruması ve bot filtresi de birlikte gelir.
  • Hosting sağlayıcısının WAF’ı: paneli üzerinden birkaç tıkla açılır.
  • Sunucu üzerinde ModSecurity: kendi sunucunuzu yönetiyorsanız kural setleriyle çalışır.

WAF bir yama değil, bir filtredir: kodunuzdaki açığı kapatmaz, sömürülmesini zorlaştırır. Zaman kazandırır — o zamanı düzeltmeyi yapmak için kullanın.

5. Yönetim paneli ve erişim

  • Yönetici giriş adresini varsayılan hâlde bırakmayın; mümkünse IP kısıtlaması uygulayın.
  • Giriş denemelerine sınır koyun (brute force koruması).
  • Yönetici hesaplarında çok faktörlü doğrulama zorunlu olsun.
  • Kullanılmayan kullanıcıları, eklentileri ve temaları silin — “pasife almak” yetmez.
  • FTP yerine SFTP/SSH kullanın; sunucuda parola yerine anahtar tabanlı erişim tercih edin.
  • Hata mesajlarını üretimde kapatın: yığın izleri (stack trace) saldırgana yol haritası verir.

6. Yedekleme ve izleme

Güvenlikte tek gerçek sigorta yedektir. Site için doğru düzen:

  • Günlük veritabanı, haftalık tam dosya yedeği.
  • Yedekler sunucudan ayrı bir yerde; en az bir kopya çevrimdışı.
  • Ayda bir geri dönüş testi — dönmeyen yedek yedek değildir.
  • Erişilebilirlik ve sertifika süresi için izleme (uptime monitor) kurun.
  • Dosya bütünlüğü kontrolü: beklenmedik değişen dosyalar erken uyarı verir.

7. KVKK uyumu: form toplayan her site kapsamdadır

Ad, e-posta, telefon toplayan bir iletişim formu bile kişisel veri işlemesidir. Sitenizde bulunması gerekenler:

  • Aydınlatma metni: Hangi veriyi, hangi amaçla, hangi hukuki sebeple işlediğiniz ve ne kadar sakladığınız.
  • Açık rıza: Pazarlama izni ayrı bir kutucukla ve işaretsiz olarak sunulmalı; hizmetin ön şartı yapılamaz.
  • Çerez politikası ve banner: Zorunlu olmayan çerezler onay alınmadan çalıştırılmamalı.
  • Gizlilik politikası ve iletişim kanalı: İlgili kişi başvuru yolu açıkça belirtilmeli.
  • Veri minimizasyonu: İhtiyacınız olmayan alanı hiç toplamayın; en güvenli veri, toplanmayan veridir.
  • Saklama süresi: Süresi dolan kayıtlar imha edilmeli. Sonsuza kadar tutulan form kaydı, ihlal anında sorumluluğu büyütür.

E-ticaret yapıyorsanız buna mesafeli satış sözleşmesi, teslimat/iade koşulları ve ödeme güvenliği kuralları da eklenir.

Yayın öncesi kontrol listesi

  • HTTPS aktif, HTTP → HTTPS 301 yönlendirmesi çalışıyor
  • Güvenlik başlıkları tanımlı, karma içerik yok
  • Tüm sorgular parametre bağlamalı, tüm çıktılar kaçışlanmış
  • Formlarda CSRF token, honeypot ve hız sınırı var
  • Yönetici hesaplarında güçlü parola + MFA
  • Dizin listeleme kapalı, yönetim ve yedek dosyaları web’den erişilemez
  • Otomatik yedek çalışıyor ve geri dönüşü test edildi
  • Aydınlatma metni, çerez ve gizlilik politikaları yayında
  • Hata raporlama üretimde kapalı, loglama açık
Hızlı sağlama

Sitenizin başlık yapılandırmasını ücretsiz araçlarla (securityheaders.com, SSL Labs) test edin. 10 dakikada, düzeltilmesi kolay ama etkisi büyük eksikleri görürsünüz.

Sonuç

Web güvenliği tek bir ürünle satın alınmaz; katman katman kurulur. HTTPS ile başlar, güvenlik başlıklarıyla sertleşir, doğru kodlama pratikleriyle sağlamlaşır, WAF ile filtrelenir ve yedekle sigortalanır. KVKK uyumu ise bunun hukuki tamamlayıcısıdır.

Kurduğumuz her sitede bu katmanları standart olarak uyguluyoruz. Mevcut sitenizin güvenlik durumunu gözden geçirmemizi isterseniz bize ulaşın; işletmenizin genel güvenlik seviyesi için de 12 adımlık KOBİ rehberimize göz atın.

Sık sorulan sorular

Hayır. HTTPS yalnızca trafiği şifreler; uygulama katmanındaki açıklar (SQL injection, XSS, zayıf oturum yönetimi) SSL ile kapanmaz.

Let’s Encrypt gibi ücretsiz sertifikalar şifreleme gücü açısından ücretli sertifikalarla aynıdır; fark, kurumsal doğrulama seviyesi ve garanti kapsamındadır.

Siteyi bakım moduna alın, tüm parolaları ve API anahtarlarını değiştirin, temiz bir yedekten dönün, güncellemeleri yapın ve zafiyetin giriş noktasını kapatmadan yayına almayın.

Dijital dönüşüme bugün başlayın

Yazıdaki adımları işletmenizde hayata geçirmek için tek bir görüşme yeterli.