← Tüm yazılar

Clickjacking Nedir? Görünmez Tıklama Saldırıları ve frame-ancestors Koruması

22 Eylül 2026

Clickjacking Nedir? Görünmez Tıklama Saldırıları ve frame-ancestors Koruması

Clickjacking (tıklama hırsızlığı), kullanıcıya gördüğü şeyden farklı bir şeye tıklattırma saldırısıdır. Saldırgan, sizin sitenizi görünmez bir iframe içinde kendi sayfasına gömer; üzerine çekici bir düğme (“Ödülü Al”) yerleştirir. Kullanıcı o düğmeye tıkladığını sanır; aslında iframe’deki sizin sitenizin bir işlevine (ör. “yetki ver”, “takip et”, “sil”) tıklamıştır. Bu yazıda saldırının mekaniğini ve etkili, modern korumayı ele alıyoruz.

Saldırı nasıl kurulur?

  1. Saldırgan bir sayfa hazırlar ve sizin sitenizi bir <iframe> içine yükler.
  2. CSS ile iframe’i şeffaf yapar (opacity: 0) ve tam kullanıcının tıklayacağı yere hizalar.
  3. Altına cazip bir içerik koyar. Kullanıcı görünürdeki içeriğe tıklar; tıklama şeffaf iframe’e, yani sizin sitenizdeki gerçek düğmeye gider.

Kullanıcı oturumu açıksa, işlem onun kimliğiyle gerçekleşir. Bu yüzden clickjacking, tek tıkla tetiklenen durum-değiştiren işlemlerde (bir hesabı yetkilendirme, bir gönderiyi silme, bir bağış onaylama) tehlikelidir.

Modern koruma: frame-ancestors

Bugünkü en sağlam savunma, Content-Security-Policy’nin frame-ancestors direktifidir. Sitenizin hangi kaynaklar tarafından iframe’e gömülebileceğini belirtir:

Content-Security-Policy: frame-ancestors 'none';
  • 'none': Site hiçbir yerde iframe’e gömülemez (en güvenli varsayılan).
  • 'self': Yalnız kendi kaynağınız gömebilir.
  • frame-ancestors https://guvendigim.example: Yalnız belirtilen kaynak gömebilir.

Eski koruma: X-Frame-Options

frame-ancestors desteklenmeden önceki başlık X-Frame-Options’tır:

X-Frame-Options: DENY

DENY (hiçbir yerde gömülemez) veya SAMEORIGIN (yalnız kendi kaynağı) değerlerini alır. Modern tarayıcılarda CSP frame-ancestors bunun yerini alır ve daha esnektir; ancak çok eski istemcileri de düşünüyorsanız ikisini birlikte göndermek zararsızdır. Not: X-Frame-Options’ın ALLOW-FROM değeri artık güvenilir biçimde desteklenmez; birden çok kaynağa izin için frame-ancestors kullanın.

Nasıl doğrularsınız?

Sayfanızın gömülmeye karşı korunup korunmadığını başlıklardan kontrol edin:

curl -sI https://siteniz.com | grep -iE "content-security-policy|x-frame-options"

frame-ancestors 'none' veya X-Frame-Options: DENY görmelisiniz. Ayrıca kendi test sayfanızda sitenizi bir <iframe>'e koymayı deneyin; koruma varsa iframe boş kalır veya tarayıcı yüklemeyi reddeder.

Uygulama önerileri

  1. Gömülmesi gerekmeyen tüm sayfalarda frame-ancestors 'none' kullanın; bu, admin panelleri ve durum değiştiren sayfalar için varsayılan olmalı.
  2. Gerçekten gömülmesi gereken sayfalar (widget vb.) için yalnız güvendiğiniz kaynakları izinli yapın.
  3. Kritik işlemlerde ek onay (yeniden kimlik doğrulama, açık bir “emin misiniz?”) clickjacking’in etkisini azaltır.

Özet

Clickjacking, görünmez bir iframe ile kullanıcının tıklamasını çalar. Çözüm basit ve etkilidir: sitenizin nerede iframe’e gömülebileceğini Content-Security-Policy: frame-ancestors ile (eski istemciler için X-Frame-Options ile birlikte) sıkı biçimde sınırlayın. Gömülmesi gerekmeyen her sayfa için varsayılan frame-ancestors 'none' olmalıdır.

Kaynaklar: MDN: frame-ancestors, OWASP Clickjacking Defense Cheat Sheet.

Sayfalarınızın clickjacking’e karşı doğru başlıkları gönderip göndermediğini CyberTestify’ın taraması kontrol eder — dış yüzeyinizdeki eksik güvenlik başlıklarını görün.