Target = "_ blank" ve rel = "noopener noreferrer" ile bağlantı hala savunmasız mı?


95

İnsanların target="_blank"bir bağlantıyı farklı bir pencerede açmak için kullandığını önerdiğini görüyorum rel="noopener noreferrer". Bunun, örneğin Chrome'da Geliştirici Araçlarını kullanmamı ve rel özelliğini kaldırmamı nasıl engellediğini merak ediyorum. Ardından bağlantıya tıklayarak ...

Bu, güvenlik açığını korumanın kolay bir yolu mu?


Ne tür bir koruma sağlayacağını (bu durumda vermeyeceğini) düşünüyorsunuz?

DOM'u işleyebilecek tarayıcı uzantıları düşünüyordum.
Miro J.

1
Firefox 79 bunu otomatik olarak yapacak ( noopeneren azından, ancak aşağıda belirtildiği gibi, noreferrergerçek oluyor): hacks.mozilla.org/2020/07/firefox-79
Kev

Yanıtlar:


114

Güvenlik açığını yanlış anlıyor olabilirsiniz. Bununla ilgili daha fazla bilgiyi buradan okuyabilirsiniz: https://www.jitbit.com/alexblog/256-targetblank---the-most-underestimated-vulnerability-ever/

Esasen, ekleme rel="noopener noreferrer"bağlantıları sen ettik siteye sahip karşı sitenizin kullanıcılarını koruyan bağlantılı potansiyel olarak tarayıcıyı kaçırma (via sahtekar JS).

Bu özniteliği Geliştirici Araçları aracılığıyla kaldırmayı soruyorsunuz - bu yalnızca sizi (özniteliği kurcalayan kişi) güvenlik açığına maruz bırakabilir.


8
noopener noreferrergereksizdir, çünkü noreferrerişlevselliğini içerir noopener. html.spec.whatwg.org/multipage/links.html#link-type-noreferrer
mfluehr

1
Gereksiz ise neden Visual Studio Code her ikisini de gerektirir?
Mühe

57

target="_blank"Bunların üzerindeki bağlantılar , kullanıcının dikkati yeni açılan sekme tarafından yönlendirilirken, yönlendirme sayfasının arka planda değiştirilmesine karşı savunmasızdır . Bu, ters sekme olarak bilinir :

Örnek kötü amaçlı akış

Yönlendiren sayfa, içinde saklanır window.openerve kötü niyetli bir site bunu şu yollarla değiştirebilir:

if (window.opener) {
   window.opener.location = "https://phish.example.com";
}

Eklemek rel="noopener noreferrer"bu güvenlik açığını tüm büyük tarayıcılarda düzeltir.

Teorik olarak rel müşteri tarafını manipülasyon yoluyla kaldırabileceğinizi unutmayın ... ama neden bunu isteyesiniz? Tek yaptığınız, kasıtlı olarak kendinizi saldırıya açık hale getirmek.

Aynı web sitesini ziyaret eden (ve kendi istemci tarafı kodunu değiştirmeyen) diğer kullanıcılar, sunucu yine de rel="noopener noreferrer". Onu kaldırmanız sadece sizin için geçerlidir.


3

Çapa etiketi rel=”noopener”veya rel=”noreferrer”öznitelikleri web sitesi güvenliğini artırır, ancak bazı insanlar web sitelerinin arama motoru optimizasyonunu etkileyeceklerini düşündükleri için bunları görmezden gelmek ister, ancak bu sadece bir efsanedir. Web sitesi hedef kitlenizin gizliliğini korur ve kötü amaçlı kod yayarak harici web sitesini engeller.


5
"Efsane" ifadesi için bir kaynak aktarabilirseniz iyi olur. Özellikle noreferrerrol için.
Miro J.

0

Geliştirici konsolu ile ilgili uyarı gösteriyorsa noopener noreferrer, emin hem eklemek yapmak noopenerve noreferrerrel içinde. bağlantı aşağıdaki gibi olmalıdır:

<a href="www.google.com" target="_blank" rel="noopener noreferrer" />
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.