Clickjacking Nedir? Görünmez Tıklama Saldırıları ve frame-ancestors Koruması
22 Eylül 2026
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?
- Saldırgan bir sayfa hazırlar ve sizin sitenizi bir
<iframe>içine yükler. - CSS ile iframe’i şeffaf yapar (
opacity: 0) ve tam kullanıcının tıklayacağı yere hizalar. - 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
- 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ı. - Gerçekten gömülmesi gereken sayfalar (widget vb.) için yalnız güvendiğiniz kaynakları izinli yapın.
- 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.