İnternetin Temeli: Bağlantılar (Links)
İnterneti "ağ" (web) yapan yegane şey, birbirinden bağımsız web sayfalarının birbirine köprüler (hyperlinks) aracılığıyla bağlanmasıdır. HTML (HyperText Markup Language) dilinde bu işlem temel <a> (anchor) etiketi ile yapılır. Bağlantılar olmadan ziyaretçiler sitenizde gezinemez, Google botları da sayfalarınızı indeksleyemez. Kullanıcı deneyimi (UX) açısından, bazen (özellikle başka bir siteye veya bir PDF dosyasına yönlendirme yapıyorsak) kullanıcıların kendi sitemizden tamamen ayrılmasını istemeyiz; bu yüzden dış bağlantıların "Yeni Sekmede" (New Tab) açılmasını tercih ederiz.
'target="_blank"' Parametresi ve Gizli Tehlike
Bir linkin kullanıcı tıklandığında mevcut sekme yerine yeni bir sekmede açılması için ilgili HTML koduna target="_blank" niteliği (attribute) eklenir. Ancak bu çok masum görünüşlü, günlük hayatta binlerce kez kullanılan parametre, geçmişte pek çok web sitesi ve kullanıcı için ciddi bir güvenlik ve performans zafiyetine (Tabnabbing) neden olmuştur. Çoğu geliştirici bu tehlikenin farkında bile değildir.
Tabnabbing (Sekme Korsanlığı) Nedir ve Nasıl Çalışır?
Eğer bir linke sadece target="_blank" eklerseniz ve kullanıcı bu linke tıklarsa, açılan yepyeni sayfa (hedef sayfa), tarayıcının window.opener isimli bir JavaScript nesnesi aracılığıyla sizin orjinal sayfanıza (linkin tıklandığı sayfa) dolaylı bir erişim hakkı kazanır.
Siz güvenilir olduğunu düşünerek bir link vermiş olabilirsiniz ancak hedeflenen site el değiştirmiş veya hacklenmiş olabilir. Kötü niyetli bir hedef sayfa, bu erişimi kullanarak sizin arka planda açık kalan sayfanızı sahte (phishing) bir giriş ekranına sessizce yönlendirebilir. Kullanıcı yeni sekmedeki işini bitirip eski sekmeye (sizin sitenize) döndüğünde, sitenizin giriş ekranı süresinin dolduğunu sanıp şifresini siber korsanlara teslim edebilir.
Çözüm: "noopener" ve "noreferrer"
Bu büyük güvenlik açığını kapatmak ve performans sorunlarını çözmek için modern web standartları iki yeni güvenlik parametresi tanıttı:
rel="noopener": Yeni açılan sekmenin, yönlendiren sayfanın (sizin siteniz)window.openernesnesine erişmesini tamamen engeller. Böylece açılan sayfa bağımsız bir süreç (process) olarak çalışır ve sizin sitenizi manipüle edemez.rel="noreferrer": Hedef siteye trafik kaynağının (referer - yani kullanıcının hangi siteden tıklayarak geldiği) sizin siteniz olduğu bilgisini göndermez. (Daha çok gizlilik odaklıdır).
Güvenli ve standartlara uygun bir dış bağlantı (external link) şu şekilde görünmelidir:
<a href="https://tehlikeli-site.com" target="_blank" rel="noopener noreferrer">Siteyi Ziyaret Et</a>
HTML Kod Üreticisi İle Otomatik Güvenlik ve Zaman Tasarrufu
Web geliştirme sürecinde her dış bağlantı oluşturduğunuzda bu uzun parametreleri (noopener, noreferrer) akılda tutup manuel olarak yazmak zor ve unutulmaya çok müsait bir işlemdir. Unutulduğunda ise sitenizi ve kullanıcılarınızı doğrudan riske atarsınız.
HTML Kodu Oluşturma aracımız, bu sorunu kökten çözer. Araç üzerinden "Öğe Türü" olarak 'Link' seçtiğinizde ve "Yeni Sekmede Açılsın mı?" kutucuğunu işaretlediğinizde, sistem arka planda otomatik olarak target="_blank" rel="noopener noreferrer" parametrelerini temiz koda ekler. Sizin tek yapmanız gereken kodu kopyalayıp projenize yapıştırmaktır.
Zararlı URL Kontrolü (URL Sanitization)
Aracımız sadece etiket güvenliği sağlamakla kalmaz. Girdiğiniz URL'yi düzenli ifadelerle (Regex) kontrol ederek javascript: ile başlayan potansiyel tehlikeli linkleri tespit eder. Zararlı (Unsafe) veya hatalı formatlanmış bir URL algılandığında güvenlik nedeniyle bağlantı adresini # ile değiştirerek sitenizi XSS saldırılarından korur. Bu, kullanıcı girdilerini kabul eden sistemler için hayati bir özelliktir.
Tarayıcı Destekleri ve Güncel Standartlar (Best Practices)
Tabnabbing güvenlik zafiyeti öylesine ciddiye alındı ki, günümüzde Google Chrome, Mozilla Firefox ve Apple Safari gibi modern tarayıcılar artık 'target="_blank"' kullanıldığında arka planda 'noopener' özelliğini geliştirici yazmasa bile varsayılan olarak uygulamaya başladılar. Ancak, global dünyada hala eski sürüm veya farklı tabanlı tarayıcı kullanan milyonlarca insan var. Bu yüzden, web standartlarını belirleyen kuruluşlar (W3C) kodlamada bu özellikleri her zaman açıkça (explicitly) belirtmenin en iyi uygulama (best practice) olduğunu vurgulamaktadır. Aracımız da bu prensibe tam olarak uyarak geriye dönük uyumluluğu %100 garanti eder.
SEO Perspektifinden Dış Linkleme (Outbound Links) Stratejisi
Güvenlik parametrelerinin yanı sıra, sitenizden dışarıya verdiğiniz linklerin (outbound links) SEO (Arama Motoru Optimizasyonu) üzerindeki etkisini ve otorite aktarımını da bilmeniz gerekir. Güvenilir, saygın ve konunuzla alakalı otoriter sitelere (örneğin Wikipedia, resmi devlet kurumları, üniversiteler veya büyük haber siteleri) ilgili konularda dış link vermek, Google'a içeriğinizin iyi araştırılmış ve güvenilir kaynaklara dayandırıldığını gösterir. Bu iyi bir pratiktir.
Ancak, yönlendirdiğiniz sitenin kalitesinden tam emin değilseniz, sponsorlu bir link veriyorsanız veya kendi sitenizin PageRank gücünü (link juice) karşı tarafla paylaşmak istemiyorsanız, mevcut rel parametresine 'nofollow' niteliğini de ekleyebilirsiniz (`rel="noopener noreferrer nofollow"`). Kod üreticimizi kullanarak temel güvenliği (noopener) sağladıktan sonra, SEO stratejinize göre ihtiyaç duyarsanız bu ek parametreleri HTML kodunuza sonradan kolayca dahil edebilirsiniz.
İç Linklerde (Internal Links) Yeni Sekme Kullanım Mantığı
Geliştiriciler tarafından sıkça sorulan bir diğer önemli soru da kendi sitemizdeki diğer sayfalara (iç linklere) bağlantı verirken 'target="_blank"' kullanıp kullanmamamız gerektiğidir. Kullanıcı deneyimi (UX) ve kullanılabilirlik uzmanları, çok zorunlu kalmadıkça (örneğin kullanıcının bir formu doldururken sayfasından ayrılmadan bir PDF sözleşme dokümanını incelemesi gerekiyorsa) iç linklerin yeni sekmede AÇILMAMASINI şiddetle tavsiye eder.
Kullanıcı sitenizde gezinirken her tıklamada yeni bir sekme açılması, kullanıcıyı görsel olarak yorar, sekmeler arası kaybolmasına ve "sekme enflasyonuna" neden olur. Modern tarayıcılarda geri tuşu (back button) zaten bu işlev için vardır. HTML Kodu Oluşturma aracımızı kullanırken 'Yeni Sekmede Açılsın mı?' opsiyonunu alışkanlıktan ziyade stratejik olarak ve tamamen son kullanıcıyı düşünerek işaretlemeniz, web sitenizin kalitesini ve profesyonelliğini artıracaktır.