Dialog “konfirmasi navigasi” berbahaya?

32

Beberapa situs, seperti StackExchange, memunculkan "Anda yakin ingin meninggalkan halaman ini?" dialog ketika Anda mencoba meninggalkan dalam kondisi tertentu, seperti jika Anda memiliki posting Anda belum selesai mengedit. Ini sangat membantu!

Sayangnya, situs jahat atau terinfeksi suka menggunakan fungsi yang sama untuk mengatakan, "Hei! Anda belum menginstal antivirus malware kami untuk mengatasi 111 virus yang kami jelas tidak bohongi tentang menemukan di komputer Anda!", Dan "Tinggalkan ini halaman "dan" Tetap di halaman ini "opsi digantikan oleh sesuatu seperti" Aman. Instal produk kami "dan" Tembak diri Anda di kaki ". Ini tidak membantu!

Javascript dapat melakukan beberapa hal jahat. Ketika saya mendapatkan salah satu dialog yang berusaha agar saya tidak meninggalkan situs yang jelas-jelas berbahaya, seperti apa respons saya? Apakah aman untuk mengklik "Tinggalkan halaman ini" atau apa pun yang mereka ganti dengan teks? Bisakah situs mengubah perilaku tombol, atau mencegat upaya saya untuk bernavigasi dan menggambar dialog palsu sendiri yang melakukan apa pun yang diinginkan penyerang ketika saya mengkliknya?

user2357112 mendukung Monica
sumber
1
Saya baru saja membunuh seluruh proses browser dari proses explorer atau yang setara. Jauh lebih aman, karena Anda tidak tahu bahwa tombol itu sebenarnya mengatakan.
Journeyman Geek

Jawaban:

24

Terlepas dari apa yang dikatakan beberapa dialog ini, mereka tidak dapat melakukan sesuatu yang berbahaya . Anda selalu dapat mengklik OK atau Tinggalkan Halaman untuk menutup halaman yang menyinggung tanpa konsekuensi apa pun.

Jika dialog terlalu panjang dan tombol tidak aktif , Anda dapat menekanEnter untuk mengkonfirmasi penutupan halaman.

Jika Anda tidak memiliki keyboard (perangkat layar sentuh), gunakan bookmarklet di bawah ini atau lihat jawaban SimpleSimon (hanya Chrome).


Sekarang, beberapa detail.

Hanya ada satu cara untuk melakukan beberapa tindakan saat halaman ditutup: melalui onbeforeunloadacara. Tentu saja ini dapat dengan mudah digunakan terhadap pengguna (misalnya ketika ia mencoba untuk menutup halaman, itu membuka salinannya di jendela baru), jadi ini sangat terbatas.

Sebenarnya satu-satunya hal wajar yang dapat Anda lakukan adalah membuka dialog dengan teks khusus dan dua tombol, satu untuk meninggalkan halaman dan satu untuk tetap. Hanya hal yang dapat dilakukan halaman dengan dialog itu adalah menentukan teksnya. Tombol dan titlebar tidak dapat diubah. Berikut screenshot dari Firefox 3.6: ( versi Firefox yang sangat lama)

Tangkapan layar dari Firefox 3.6

Tentu saja ketika Anda membiarkan orang menampilkan sembulan dengan teks apa saja dan hanya tombol OK / Batalkan , maka Anda dapat yakin bahwa cepat atau lambat beberapa orang akan menggunakannya untuk melawan Anda.

Cuplikan layar jendela berbahaya dari Firefox 3.6

Pada tangkapan layar di atas, OK berarti "Tinggalkan halaman ini", tetapi deskripsi khusus menyarankan sesuatu yang lebih. Jadi browser telah mengubah dialog sehingga lebih sulit untuk membuatnya menyesatkan. Misalnya, versi terbaru Firefox tampaknya mengabaikan teks khusus:

Tangkapan layar dari Firefox 23

Chrome menunjukkan teks khusus, tetapi selalu menambahkan pertanyaan yang menanyakan kepada pengguna apa yang ingin dia lakukan dan tombol secara eksplisit menyatakan tindakan mereka: (tapi itu masih rentan terhadap pesan "video kucing"!)

Cuplikan layar dari Chrome 29

Inilah Internet Explorer 10, juga "rawan kucing":

Cuplikan layar dari IE 10

Opera 12 mengabaikan onbeforeunloadacara tersebut dan jika Anda mencoba untuk menutup tab seperti itu, ia akan menutup sama seperti yang lain. Saya belum menguji Opera terbaru.

Jadi, untuk meringkas hal-hal yang paling penting:

  • Halaman tidak dapat menampilkan dialog dengan teks apa pun. Situs web dapat meminta browser untuk menampilkan dialog dengan teks khusus, tetapi browser dapat mengabaikannya sama sekali (Opera), menggunakan teks umum (Firefox) atau secara eksplisit mengatakan apa yang akan terjadi (Chrome, IE).
  • Detail dialog tergantung pada browser yang Anda gunakan, tetapi tombol selalu tidak berubah. Jika mereka tidak akan mengatakan secara eksplisit mana yang melakukan apa, maka OK berarti "tinggalkan halaman ini * dan Batal adalah" tetap di sini ".
  • Situs web tidak dapat melakukan tindakan jahat jika Anda memutuskan untuk meninggalkannya. File Anda tidak akan diganti dengan video kucing, Anda tidak akan dibanjiri dengan 135234 virus dan FBI tidak akan diberitahu bahwa Anda memiliki perangkat lunak ilegal di komputer Anda.

Anda dapat menonaktifkan onbeforeunloadacara jika Anda ingin, secara efektif mencegah halaman meminta Anda untuk pergi atau tinggal. Berikut ini adalah skrip pengguna lintas-browser . (gulir ke bawah jika tautannya mati)

Jika Anda berada di situs web tertentu yang menampilkan sembulan berbahaya dan Anda masih takut untuk mengklik Tinggalkan , Anda dapat membuat bookmarklet untuk menghapusnya. Klik kanan bilah bookmark Anda, pilih Bookmark baru (atau yang setara) dan tempel ini sebagai URL: (itu hanya kode yang diperkecil dari tautan di atas)

javascript:var x=document.createElement('script');x.type='text/javascript';x.innerHTML='onbeforeunload=function(){};';document.body.appendChild(x);

Kemudian cukup klik bookmark itu dan popup akan dihapus sementara dari halaman aktif.

Jika Anda ingin menguji bagaimana popup itu terlihat di browser Anda atau menguji bookmarklet / skrip pengguna, buat file teks dengan kode berikut dan simpan sebagai .htmlfile:

<html><body onbeforeunload="return 'My custom text.'">_</body></html>

Tampaknya tautan skrip pengguna sudah mati sekarang, jadi inilah salinan yang diambil dari cache archive.org . Semua kredit untuk pembuat skrip asli.

// ==UserScript==
// @name           Disable - remove onbeforeunload
// @namespace      
// @description    Disable - remove the annoying onbeforeunload event
// @include        *
// @author         netvisiteurs.com
// ==/UserScript==

var x = document.createElement('script');
x.type = 'text/javascript';
x.innerHTML = 'onbeforeunload = function() {};';
document.body.appendChild(x);
gronostaj
sumber
2
Saya akan menekan "OK" pada yang kedua. Lagi pula, siapa yang tidak ingin lebih banyak video kucing?
Daniel R Hicks
Ooh, Javascript untuk menonaktifkan dialog. Bagus!
user2357112 mendukung Monica
Sedihnya, script pengguna itu tidak bisa diandalkan di beberapa halaman web. Dialog masih ditampilkan meskipun window.onbeforeunload dan window.onunload menjadi nol. Saya tidak tahu bagaimana mereka bisa melakukan itu, saya kira pawang ditimpa pada beberapa titik dan kemudian dimasukkan kembali ke nol mungkin pada beberapa acara onclick.
Atan
10

Sebenarnya, FireFox memiliki solusi yang agak bagus (dan mudah). Jika Anda mengetik

about:config

ke bilah alamat, lalu gulir ke bawah ke

dom.disable_beforeunload

dan tetapkan nilainya ke True Anda tidak akan lagi melihat popup Tinggalkan Halaman. Di FireFox. Sayang sekali tidak ada solusi serupa di Chrome.

Yang Mulia Jim
sumber
7

Solusi paling sederhana di Chrome adalah dengan tab crash.

Ketik chrome: // tabrak bilah alamat dan simpan sebagai bookmark .

Lain kali Anda ingin meninggalkan halaman seperti itu klik saja bookmark dan itu akan membunuh tab itu secara instan, tanpa mempengaruhi tab Anda yang lain. Tidak perlu mematikan seluruh sesi browser seperti yang disarankan beberapa orang lain.

Atau Anda dapat menggantung tab menggunakan chrome: // hang lalu cukup tutup tab tanpa menjalankan JavaScript.

Tidak yakin apakah ini dapat dilakukan di browser lain.

SimpleSimon
sumber
Versi-versi yang lebih baru dari halaman-halaman ini akan menampilkan sembulan lain pada tindakan pengguna apa pun seperti klik-mouse atau penekanan tombol, sehingga Anda tidak dapat lagi chrome: // crash
rsaxvc
1

Ini adalah window.onbeforeunload acara dan fitur dari browser web. Jadi ini harus menjadi dialog tetap dari browser web. Anda dapat mencoba di berbagai browser dan agar Anda dapat melihat, dialog-dialognya ada dalam desain yang berbeda.

Tapi saya berasumsi, Anda bisa mengembangkan popup dengan javascript, yang terlihat sangat mirip dengan popup asli dari browser. Dan jika itu adalah pengembang yang baik, ia juga akan memeriksa jenis browser sebelum menampilkan dialog. ;)

Jadi untuk sangat yakin tentang dialog asli, Anda harus memeriksa silang secara paralel dengan dialog yang benar, yaitu di sini: http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/onbeforeunload.htm

Lihat di sini untuk informasi lebih lanjut tentang acara ini:
https://developer.mozilla.org/en-US/docs/Web/API/window.onbeforeunload
http://msdn.microsoft.com/en-us/library/ms536907% 28VS.85% 29.aspx

Chris
sumber
0

Solusi cepat jika Anda tidak mempercayai "popup" & niat / tindakannya:

Untuk Chrome:

  • Escape untuk menghapus sembulan

  • Klik kanan pada Halaman

  • Pilih Inspeksi

  • Gulir ke atas

  • Klik kanan pada tag

  • Hapus Node

  • Tutup Tab

Saya yakin browser lain memiliki opsi serupa.

George 2.0 Hope
sumber
3
Penanganan lebih cepat: selalu klik Tinggalkan halaman ini ;)
gronostaj