Bazı siteler başka bir sitenin içinde, çerçeve (iframe) olarak açılamaz. Tarayıcı boş bir kutu ya da "bağlantı reddedildi" mesajı gösterir. Bunun nedeni neredeyse her zaman sitenin gönderdiği iki güvenlik başlığından biridir. Bu yazıda ikisini, neden var olduklarını ve ihtiyacınıza göre nasıl ayarlayacağınızı anlatıyoruz.
Sitenizin durumunu iframe testi ile hemen görebilirsiniz; engelleyen başlığı ve çözümünü gösterir.
Çerçeve engeli neden var?
Başka bir sitenin sizin sayfanızı görünmez bir çerçevede açıp ziyaretçiyi farkında olmadan bir düğmeye tıklatmasına tıklama sahtekârlığı (clickjacking) denir. Örneğin bir saldırgan, banka sayfanızı şeffaf bir çerçevede açıp kullanıcının "onayla" düğmesine basmasını sağlayabilir. Çerçeve başlıkları bu saldırıyı önler.
Bu yüzden ödeme, hesap ayarları ve yönetim paneli gibi sayfalarda çerçeve engeli olmalıdır. Tanıtım sayfası, blog yazısı ya da ürün sayfası gibi herkese açık içerikte ise genellikle gerekmez.
İki başlık
X-Frame-Options (eski ama yaygın):
DENY: hiçbir site, kendi siteniz dahil, sayfayı çerçeve içinde açamaz.SAMEORIGIN: yalnızca sizin sitenizdeki sayfalar çerçeveleyebilir.
Content-Security-Policy: frame-ancestors (modern):
frame-ancestors 'none': DENY ile aynı.frame-ancestors 'self': SAMEORIGIN ile aynı.frame-ancestors 'self' https://ornek.com: kendi siteniz ve listelediğiniz siteler çerçeveleyebilir.
İkisi birlikte gönderilirse tarayıcılar frame-ancestors'a uyar.
Engeli kim ekliyor?
Başlığı siz eklememiş olabilirsiniz. Sık rastlanan kaynaklar:
- Güvenlik eklentileri (WordPress'te Wordfence, iThemes Security vb.) varsayılan olarak SAMEORIGIN ekler.
- Hosting firmaları bazı paketlerde sunucu düzeyinde ekler.
- Cloudflare ve benzeri hizmetlerdeki güvenlik kuralları.
- Site kurucular (Wix, Shopify ve benzerleri) çoğu zaman değiştirilemez şekilde ekler.
Güvenli şekilde nasıl açılır?
Önerimiz, engeli tüm siteden kaldırmak yerine yalnızca herkese açık sayfalarda gevşetmek ve yönetim/ödeme sayfalarında korumaktır.
Apache (.htaccess), tüm sitede kaldırmak için:
<IfModule mod_headers.c>
Header unset X-Frame-Options
</IfModule>
Nginx: add_header X-Frame-Options satırını kaldırın; yönetim yolu için ayrı bir location bloğunda koruyun:
location /wp-admin/ {
add_header X-Frame-Options SAMEORIGIN;
}
WordPress: Güvenlik eklentinizin ayarlarında "X-Frame-Options" veya "clickjacking koruması" seçeneğini arayın. organikhit.io WordPress eklentisi bu izni yalnızca sörf ekranı için, tek tıkla verir.
Sık sorulan sorular
Engeli kaldırmak sitemi tehlikeye atar mı?
Herkese açık, form ve oturum içermeyen sayfalarda risk çok düşüktür. Giriş, ödeme ve yönetim sayfalarında engeli koruduğunuz sürece tıklama sahtekârlığına karşı korunmuş olursunuz.
Wix veya Shopify kullanıyorum, ne yapabilirim?
Bu platformlar başlığı genellikle değiştirmeye izin vermez. Bu durumda siteniz sörf ekranında açılamaz; ziyaretçileri kendi alan adınızdaki ayrı bir tanıtım sayfasına (ör. bir blog yazısı) yönlendirmeyi düşünebilirsiniz.
Başlığı kaldırdım ama test hâlâ engelli diyor.
Önbellek veya CDN eski yanıtı sunuyor olabilir. Önbelleği temizleyip yeniden test edin. Ayrıca başlığın birden fazla yerde (eklenti, sunucu, CDN) eklenip eklenmediğini kontrol edin.