Tautan dengan target = “_ blank” dan rel = “noopener noreferrer” masih rentan?

96

Saya melihat orang-orang merekomendasikan bahwa setiap kali seseorang menggunakan target="_blank"tautan untuk membukanya di jendela yang berbeda, mereka harus meletakkannya rel="noopener noreferrer". Saya bertanya-tanya bagaimana hal ini mencegah saya menggunakan Alat Pengembang di Chrome, misalnya, dan menghapus atribut rel. Kemudian mengklik link ...

Apakah itu cara mudah untuk tetap menjaga kerentanan?

Miro J.
sumber
Perlindungan macam apa yang menurut Anda akan (atau tidak akan, dalam kasus ini) berikan?
Saya sedang mempertimbangkan ekstensi browser yang dapat memanipulasi DOM.
Miro J.
1
Firefox 79 akan melakukan ini secara otomatis (yah, noopenersetidaknya, tetapi seperti yang ditunjukkan di bawah ini, noreferrerberlebihan): hacks.mozilla.org/2020/07/firefox-79
Kev

Jawaban:

116

Anda mungkin salah paham tentang kerentanan. Anda dapat membaca lebih lanjut tentang itu di sini: https://www.jitbit.com/alexblog/256-targetblank---the-most-underestimated-vulnerability-ever/

Pada dasarnya, menambahkan rel="noopener noreferrer"tautan melindungi pengguna situs Anda agar situs yang Anda tautkan berpotensi membajak browser (melalui JS nakal).

Anda bertanya tentang menghapus atribut itu melalui Alat Pengembang - yang hanya akan berpotensi membuat Anda (orang yang merusak atribut tersebut) terkena kerentanan.

Jon Uleis
sumber
8
noopener noreferrermubazir, karena noreferrermenyertakan fungsionalitas noopener. html.spec.whatwg.org/multipage/links.html#link-type-noreferrer
mfluehr
1
jika itu berlebihan mengapa Visual Studio Code membutuhkan keduanya?
muhe
57

Tautan target="_blank"yang memilikinya rentan terhadap laman perujuk yang ditukar di latar belakang sementara perhatian pengguna dialihkan oleh tab yang baru dibuka. Ini dikenal sebagai tabnapping terbalik :

Contoh aliran berbahaya

Halaman perujuk disimpan di window.opener, dan situs berbahaya dapat memodifikasinya melalui:

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

Menambahkan rel="noopener noreferrer"perbaikan kerentanan ini di semua browser utama.

Perhatikan bahwa Anda secara teoritis dapat menghapus sisi rel klien melalui manipulasi ... tetapi mengapa Anda ingin? Yang Anda lakukan hanyalah membuat diri Anda rentan terhadap serangan itu.

Pengguna lain yang mengunjungi situs web yang sama (dan tidak mengubah kode sisi klien mereka sendiri) akan tetap aman, karena server akan tetap menyajikan rel="noopener noreferrer". Penghapusan Anda hanya berlaku untuk Anda.

Usia Obsidian
sumber
3

Tag anchor rel=”noopener”atau rel=”noreferrer”atribut meningkatkan keamanan situs web, tetapi beberapa orang ingin mengabaikannya karena mereka pikir itu akan memengaruhi pengoptimalan mesin pencari situs web mereka, tetapi itu hanya mitos. Ini melindungi kerahasiaan audiens situs Anda dan mencegah situs web eksternal dengan menyebarkan kode berbahaya.

Kowsigan Atsayam
sumber
5
Alangkah baiknya jika Anda dapat mengutip beberapa sumber untuk pernyataan "mitos". Terutama untuk noreferrerbagian itu.
Miro J.
0

Jika konsol pengembang menunjukkan peringatan mengenai noopener noreferrer, pastikan Anda menambahkan keduanya noopenerdan noreferrerdalam rel. link harus seperti di bawah ini:

<a href="www.google.com" target="_blank" rel="noopener noreferrer" />
Yuvraj Patil
sumber