Mal độc hại xác nhận điều hướng hộp thoại điều hướng?


32

Một số trang web, như StackExchange, bật lên một "Bạn có chắc chắn muốn rời khỏi trang này?" hộp thoại khi bạn cố gắng để lại trong một số điều kiện nhất định, chẳng hạn như nếu bạn có một bài đăng bạn chưa hoàn thành chỉnh sửa. Điều này rất hữu ích!

Thật không may, các trang web độc hại hoặc bị nhiễm muốn sử dụng cùng chức năng để nói: "Này! Bạn đã cài đặt phần mềm chống vi-rút phần mềm độc hại của chúng tôi để xử lý 111 vi-rút mà chúng tôi chắc chắn không nói dối về việc tìm kiếm trên máy tính của bạn!" Và "Để lại này tùy chọn trang "và" Ở lại trang này "được thay thế bằng một cái gì đó như" An toàn. Cài đặt sản phẩm của chúng tôi "và" Tự bắn vào chân mình ". Điều này là vô ích!

Javascript có thể làm một số thứ khó chịu. Khi tôi nhận được một trong những hộp thoại đó cố gắng ngăn tôi rời khỏi một trang web độc hại rõ ràng, phản ứng của tôi phải là gì? Có an toàn không khi nhấp vào "Rời khỏi trang này" hoặc bất cứ điều gì họ thay thế văn bản bằng? Một trang web có thể thay đổi hành vi của nút hoặc chặn nỗ lực của tôi để điều hướng đi và vẽ hộp thoại giả của chính nó làm bất cứ điều gì kẻ tấn công muốn khi tôi nhấp vào nó?


1
Tôi sẽ giết toàn bộ quá trình trình duyệt từ trình thám hiểm quá trình hoặc tương đương. An toàn hơn nhiều, vì bạn không biết rằng nút thực sự nói.
Journeyman Geek

Câu trả lời:


24

Mặc dù một số hộp thoại này nói gì, chúng không thể làm bất cứ điều gì độc hại . Bạn luôn có thể nhấp vào OK hoặc Rời khỏi Trang để đóng trang vi phạm mà không có bất kỳ hậu quả nào.

Nếu hộp thoại quá dài và các nút tắt màn hình , bạn có thể nhấnEnter để xác nhận đóng trang.

Nếu bạn không có bàn phím (thiết bị màn hình cảm ứng), hãy sử dụng bookmarklet bên dưới hoặc xem câu trả lời của SimpleSimon (chỉ Chrome).


Bây giờ, một số chi tiết.

Chỉ có một cách để thực hiện một số hành động khi một trang đang đóng: thông qua onbeforeunloadsự kiện. Tất nhiên điều này có thể dễ dàng được sử dụng đối với người dùng (ví dụ: khi anh ta cố gắng đóng một trang, nó sẽ mở bản sao của nó trong một cửa sổ mới), vì vậy nó rất hạn chế.

Trên thực tế, điều hợp lý duy nhất bạn có thể làm là mở một hộp thoại với văn bản tùy chỉnh và hai nút, một để rời khỏi trang và một để ở lại. Điều duy nhất một trang có thể làm với hộp thoại đó là xác định văn bản của nó. Các nút và thanh tiêu đề là bất biến. Đây là ảnh chụp màn hình từ Firefox 3.6: ( phiên bản Firefox rất cũ)

Ảnh chụp màn hình từ Firefox 3.6

Tất nhiên, khi bạn cho phép mọi người hiển thị cửa sổ bật lên với bất kỳ văn bản nào và chỉ các nút OK / Hủy , thì bạn có thể chắc chắn rằng sớm hay muộn một số kẻ sẽ sử dụng nó để chống lại bạn.

Ảnh chụp màn hình của một cửa sổ độc hại từ Firefox 3.6

Trong ảnh chụp màn hình ở trên, OK có nghĩa là "Thoát khỏi trang này", nhưng mô tả tùy chỉnh gợi ý thêm điều gì đó. Vì vậy, các trình duyệt đã thay đổi các hộp thoại để khó khiến chúng bị sai lệch. Ví dụ, các phiên bản gần đây của Firefox dường như bỏ qua văn bản tùy chỉnh:

Ảnh chụp màn hình từ Firefox 23

Chrome hiển thị văn bản tùy chỉnh, nhưng luôn xuất hiện một câu hỏi hỏi người dùng muốn làm gì và các nút nêu rõ hành động của họ: (nhưng nó vẫn thiên về các thông báo "video mèo"!)

Ảnh chụp màn hình từ Chrome 29

Đây là Internet Explorer 10, cũng "dễ bị mèo":

Ảnh chụp màn hình từ IE 10

Opera 12 chỉ cần bỏ qua onbeforeunloadsự kiện và nếu bạn cố gắng đóng một tab như thế, nó sẽ đóng giống như bất kỳ sự kiện nào khác. Mặc dù vậy, tôi chưa thử nghiệm Opera mới nhất.

Vì vậy, để tổng hợp những điều quan trọng nhất:

  • Các trang không thể hiển thị các hộp thoại với bất kỳ văn bản. Trang web có thể yêu cầu trình duyệt hiển thị hộp thoại với văn bản tùy chỉnh, nhưng trình duyệt có thể bỏ qua hoàn toàn (Opera), sử dụng văn bản chung (Firefox) hoặc nói rõ ràng điều gì sẽ xảy ra (Chrome, IE).
  • Chi tiết của hộp thoại tùy thuộc vào trình duyệt bạn đang sử dụng, nhưng các nút luôn không thay đổi. Nếu họ không nói rõ ràng ai sẽ làm gì, thì OK có nghĩa là "rời khỏi trang này * và Hủy là" ở lại đây ".
  • Trang web không thể thực hiện bất kỳ hành động độc hại nào nếu bạn quyết định rời bỏ chúng. Các tệp của bạn sẽ không được thay thế bằng video mèo, bạn sẽ không bị nhiễm 135234 virus và FBI sẽ không được thông báo rằng bạn có phần mềm bất hợp pháp trên máy tính của mình.

Bạn có thể vô hiệu hóa onbeforeunloadsự kiện nếu bạn muốn, ngăn chặn hiệu quả các trang yêu cầu bạn rời khỏi hoặc ở lại. Dưới đây là một trình duyệt chéo UserScript . (cuộn xuống nếu liên kết đã chết)

Nếu bạn đang truy cập một trang web cụ thể hiển thị cửa sổ bật lên độc hại và bạn vẫn sợ nhấp vào Rời khỏi , bạn có thể tạo một bookmarklet để xóa nó. Nhấp chuột phải vào thanh dấu trang của bạn, chọn Dấu trang mới (hoặc tương đương) và dán mã này dưới dạng URL: (đó chỉ là mã được trích từ liên kết trên)

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

Sau đó, chỉ cần nhấp vào dấu trang đó và cửa sổ bật lên sẽ tạm thời bị xóa khỏi trang hoạt động.

Nếu bạn muốn kiểm tra xem các cửa sổ bật lên đó trông như thế nào trong trình duyệt của bạn hoặc kiểm tra bookmarklet / usercript, hãy tạo một tệp văn bản với mã sau đây và lưu nó dưới dạng .htmltệp:

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

Có vẻ như liên kết usercript đã chết ngay bây giờ, vì vậy đây là một bản sao được trích xuất từ bộ đệm archive.org . Tất cả tín dụng cho người tạo kịch bản gốc.

// ==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);

2
Tôi sẽ nhấn "OK" trên cái thứ hai đó. Rốt cuộc, ai không muốn có thêm video mèo?
Daniel R Hicks

Ooh, Javascript để vô hiệu hóa hộp thoại. Tốt đẹp!
user2357112 hỗ trợ Monica

Đáng buồn thay, usercript đó không hoạt động đáng tin cậy trên một số trang web. Hộp thoại vẫn được hiển thị mặc dù window.onb Beforeunload và window.onunload là null. Tôi không biết làm thế nào họ quản lý để làm điều đó, tôi cho rằng trình xử lý bị ghi đè tại một số điểm và sau đó đưa trở lại null có thể trong một số sự kiện onclick.
Atan

10

Trên thực tế, FireFox có một giải pháp khá tiện lợi (và dễ dàng). Nếu bạn gõ

about:config

vào thanh địa chỉ, sau đó cuộn xuống

dom.disable_beforeunload

và đặt giá trị của nó thành True, bạn sẽ không còn thấy cửa sổ bật lên Trang rời. Trong FireFox. Quá tệ, không có cách giải quyết tương tự trong Chrome.


7

Giải pháp đơn giản nhất trong Chrome là đánh sập tab.

Loại chrome: // sụp đổ vào thanh địa chỉ và tiết kiệm như một bookmark .

Lần tới khi bạn muốn rời khỏi một trang như vậy chỉ cần nhấp vào dấu trang và nó sẽ giết tab đó ngay lập tức, mà không ảnh hưởng đến các tab khác của bạn. Không cần phải giết toàn bộ phiên trình duyệt như một số người khác đã đề xuất.

Ngoài ra, bạn có thể treo tab bằng chrome: // hang sau đó chỉ cần đóng tab mà không cần chạy JavaScript.

Không chắc chắn nếu điều này là có thể trong các trình duyệt khác.


Các phiên bản mới hơn của các trang này sẽ đưa ra một cửa sổ bật lên khác trên bất kỳ hành động nào của người dùng như nhấp chuột hoặc nhấn phím, do đó bạn không còn có thể chrome: // crash
rsaxvc

1

Đây là sự kiện window.onb Beforeunload và một tính năng của trình duyệt web. Vì vậy, đây phải là một hộp thoại cố định của trình duyệt web. Bạn có thể thử trong các trình duyệt khác nhau và vì vậy bạn có thể thấy, các hộp thoại có thiết kế khác nhau.

Nhưng tôi giả sử, bạn có thể phát triển một cửa sổ bật lên bằng javascript, trông rất giống với cửa sổ bật lên ban đầu của trình duyệt. Và nếu đó là một nhà phát triển giỏi, anh ta cũng sẽ kiểm tra loại trình duyệt trước khi hiển thị hộp thoại. ;)

Vì vậy, để chắc chắn về một hộp thoại gốc, bạn nên kiểm tra chéo song song hộp thoại chính xác, tức là ở đây: http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/onb Beforeunload.htm

Xem tại đây để biết thêm thông tin về sự kiện này:
https://developer.mozilla.org/en-US/docs/Web/API/window.onb Beforeunload http://msdn.microsoft.com/en-us/l Library /
ms536907% 28VS, 85% 29.aspx


0

Giải pháp nhanh chóng nếu bạn không tin tưởng vào "cửa sổ bật lên" và ý định / hành động của nó:

Đối với Chrome:

  • Thoát để loại bỏ cửa sổ bật lên

  • Nhấp chuột phải vào trang

  • Chọn Kiểm tra

  • Di chuyển lên trên cùng

  • Nhấp chuột phải vào thẻ

  • Xóa nút

  • Đóng tab

Tôi chắc rằng các trình duyệt khác có các tùy chọn tương tự.


3
Cách giải quyết nhanh hơn: luôn nhấp vào Rời khỏi trang này ;)
gronostaj
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.