Clickjacking
Tıklama Gaspı
- Okunuşu
- klikceking
Kısaca
Clickjacking, meşru bir siteyi kötü amaçlı bir sayfada görünmez bir çerçeveye gizleyerek kullanıcıları göremedikleri düğmelere tıklamaya kandıran saldırıdır.
Clickjacking nedir?
UI redressing olarak da bilinen clickjacking, bir kullanıcıyı tıkladığını sandığından farklı bir şeye tıklamaya kandırır. Saldırganın sayfası, kurbanın oturum açtığı bir banka veya sosyal ağ gibi hedef siteyi bir iframe içinde yükler, bu çerçeveyi tamamen saydam yapar ve onu Oynat ya da Ödülü al gibi zararsız görünen bir düğmenin tam üzerine yerleştirir. Kurban tıkladığında tıklama aslında gizli siteye, örneğin bir Transfer, Hesabı sil veya Kameraya izin ver düğmesine gider.
Saldırı, çerçevelenen site kurbanın çerezleriyle yüklendiği için işe yarar; site tıklamayı oturum açmış kullanıcının gerçek bir eylemi sayar. Varyantları arasında sosyal medya düğmelerinde likejacking, gerçek imlecten kaydırılmış sahte bir imleç çizen cursorjacking ve kurbana birkaç tıklamayı adım adım yaptıran çok adımlı saldırılar vardır. Kullanıcı gerçekten tıkladığı için geçerli bir oturumu veya CSRF token'ını denetleyen savunmalar yardımcı olmaz.
Temel savunma, tarayıcılara sayfalarınızın başka siteler tarafından çerçevelenmemesi gerektiğini söylemektir. Modern yol, Content Security Policy direktifi frame-ancestors 'none' veya frame-ancestors 'self' kullanmaktır; eski X-Frame-Options: DENY veya SAMEORIGIN başlığı ise uyumluluk için hâlâ gönderilir. SameSite çerezleri bir katman daha ekler; çünkü siteler arası çerçeveler bu durumda kullanıcının oturumu olmadan yüklenir. Bu, size teslimat makbuzu gibi görünen bir belgeyi imzalarken, altındaki gizli bir karbon kâğıdının imzanızı başka bir belgeye kopyalamasına benzer.
Clickjacking sıklıkla CSRF ve XSS ile karıştırılır. CSRF'te saldırganın sayfası, kullanıcı hedef siteye hiç dokunmadan sahte bir istek gönderir; XSS'te ise saldırganın betiği hedef sitenin içinde çalışır. Clickjacking'de ise hiçbir kod enjekte edilmez ve hiçbir istek taklit edilmez: kurban, gizlenmiş hâldeyken hedef sitenin kendi düğmesine gerçekten tıklar.
Önemli noktalar
- Clickjacking, gerçek bir siteyi yem bir sayfanın üzerinde saydam bir çerçevede gizler.
- Kurbanın tıklaması gizli siteye gider ve kurbanın oturumuyla çalışır.
- CSRF token'ları bunu durdurmaz; çünkü tıklamayı kullanıcı gerçekten yapar.
- Çerçevelemeyi CSP
frame-ancestorsdirektifi veX-Frame-Optionsbaşlığıyla engelleyin. SameSiteçerezleri, siteler arası çerçeveleri oturumsuz bırakarak derinlemesine savunma ekler.
Örnek
// Tell browsers never to show these pages inside a frame on another site
app.use((req, res, next) => {
// Modern standard: the Content Security Policy frame-ancestors directive
res.setHeader("Content-Security-Policy", "frame-ancestors 'none'");
// Older header, still sent for legacy browsers
res.setHeader("X-Frame-Options", "DENY");
next();
});
// If your own pages must frame the site, use 'self' and SAMEORIGIN insteadSık sorulan sorular
Clickjacking'i nasıl önlerim?
Content-Security-Policy: frame-ancestors 'none' başlığını gönderin; kendi sayfalarınızın siteyi çerçevelemesi gerekiyorsa 'self' kullanın ve eski tarayıcılar için ayrıca X-Frame-Options: DENY gönderin. Bu başlıklar tarayıcıya, sayfalarınızı başka sitelerdeki çerçevelerde göstermeyi reddetmesini söyler.
X-Frame-Options kullanımdan kalktı mı?
Yerini, daha esnek olan ve ikisini de destekleyen tarayıcılarda öncelik taşıyan CSP frame-ancestors direktifi aldı. Birçok site azami uyumluluk için hâlâ iki başlığı da gönderir.
Clickjacking ile CSRF arasındaki fark nedir?
CSRF'te saldırganın sayfası, kurbanın oturum açtığı bir siteye sessizce sahte bir istek gönderir. Clickjacking'de ise kurban, görünmez bir çerçevede gizlenmiş bu sitedeki gerçek bir düğmeye tıklamaya kandırılır; bu yüzden anti-CSRF token'ları yardımcı olmaz.
İlgili sayfalar
- iframeWeb Geliştirme, s. 24iframe, başka bir web sayfasını mevcut sayfaya gömen ve sıkça videolar, haritalar, ödeme formları ve üçüncü taraf widget'lar için kullanılan HTML öğesidir.
- Content Security PolicyGüvenlik, s. 4Content Security Policy, tarayıcıya sayfanın hangi betik, stil ve kaynakları yükleyebileceğini bildirip enjekte edilen kodu engelleyen HTTP yanıt başlığıdır.
- CSRFGüvenlik, s. 5CSRF, oturum açmış kullanıcının tarayıcısını güvenilir bir siteye istenmeyen istek göndermeye kandıran, sitenin de gerçek kullanıcı eylemi sandığı saldırıdır.
- XSSGüvenlik, s. 47XSS, saldırganın güvenilir bir siteye kötü amaçlı JavaScript enjekte edip bu kodu diğer kullanıcıların tarayıcısında çalıştırmasına yol açan zafiyettir.
- Same-Origin PolicyGüvenlik, s. 32Same-origin policy, bir sitedeki betiklerin, o site açıkça izin vermedikçe başka bir sitedeki verileri okumasını engelleyen tarayıcı güvenlik kuralıdır.
- CookieWeb Geliştirme, s. 7Cookie, bir web sitesinin tarayıcıdan saklamasını ve sonraki isteklerle geri göndermesini istediği, çoğunlukla oturum açık tutmak için kullanılan küçük veridir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin