ช่องโต้ตอบ "ยืนยันการนำทาง" ที่เป็นอันตรายหรือไม่


32

บางไซต์เช่น StackExchange จะปรากฏขึ้นเป็น "คุณแน่ใจหรือไม่ว่าต้องการออกจากหน้านี้" โต้ตอบเมื่อคุณพยายามออกภายใต้เงื่อนไขบางประการเช่นหากคุณมีโพสต์คุณยังไม่ได้ทำการแก้ไข สิ่งนี้มีประโยชน์!

น่าเสียดายที่ไซต์ที่เป็นอันตรายหรือที่ติดไวรัสต้องการใช้ฟังก์ชันการทำงานเดียวกันเพื่อพูดว่า "เฮ้! คุณยังไม่ได้ติดตั้งโปรแกรมป้องกันไวรัสมัลแวร์ของเราเพื่อจัดการกับไวรัส 111 รายการที่เราไม่ได้โกหกเกี่ยวกับการค้นหาในคอมพิวเตอร์ของคุณ!" และ ตัวเลือกหน้า "และ" อยู่ในหน้านี้ "จะถูกแทนที่ด้วยบางสิ่งเช่น" ปลอดภัยติดตั้งผลิตภัณฑ์ของเรา "และ" ยิงตัวคุณเองด้วยการเดินเท้า " มันไม่ช่วยเหลือเลย!

Javascript สามารถทำสิ่งที่น่ารังเกียจ เมื่อฉันได้รับหนึ่งในกล่องโต้ตอบที่พยายามกันไม่ให้ฉันออกจากไซต์ที่เป็นอันตรายอย่างชัดเจนการตอบสนองของฉันควรเป็นอย่างไร จะปลอดภัยหรือไม่ที่จะคลิก "ออกจากหน้านี้" หรืออะไรก็ตามที่พวกเขาแทนที่ข้อความด้วย? ไซต์สามารถเปลี่ยนพฤติกรรมของปุ่มหรือขัดขวางความพยายามของฉันในการนำทางและวาดกล่องโต้ตอบปลอมของตัวเองซึ่งทำสิ่งที่ผู้โจมตีต้องการเมื่อฉันคลิก


1
ฉันเพิ่งจะฆ่ากระบวนการเบราว์เซอร์ทั้งหมดจาก process explorer หรือสิ่งที่เท่าเทียมกัน ปลอดภัยกว่ามากเนื่องจากคุณไม่รู้ว่าปุ่มบอกว่าจริง
Geek

คำตอบ:


24

แม้จะมีสิ่งที่บทสนทนาเหล่านี้พูด แต่พวกเขาไม่สามารถทำสิ่งที่เป็นอันตรายได้ คุณสามารถคลิกตกลงหรือออกจากหน้าเพื่อปิดหน้าการละเมิดโดยไม่มีผลกระทบใด ๆ

หากกล่องโต้ตอบยาวเกินไปและปุ่มไม่ได้อยู่ที่หน้าจอคุณสามารถกดEnterเพื่อยืนยันการปิดหน้า

หากคุณไม่มีแป้นพิมพ์ (อุปกรณ์หน้าจอสัมผัส) ให้ใช้ bookmarklet ด้านล่างหรือดูคำตอบของ SimpleSimon (Chrome เท่านั้น)


ตอนนี้รายละเอียดบางอย่าง

มีวิธีเดียวที่จะดำเนินการบางอย่างเมื่อหน้าปิด: ผ่านonbeforeunloadเหตุการณ์ แน่นอนว่าสิ่งนี้สามารถใช้กับผู้ใช้ได้อย่างง่ายดาย (ตัวอย่างเช่นเมื่อเขาพยายามปิดหน้าเว็บมันจะเปิดสำเนาในหน้าต่างใหม่) ดังนั้นจึงมีข้อ จำกัด มาก

จริงๆแล้วสิ่งเดียวที่สมเหตุสมผลที่คุณทำได้คือเปิดกล่องโต้ตอบพร้อมข้อความที่กำหนดเองและปุ่มสองปุ่มหนึ่งปุ่มเพื่อออกจากหน้าและอีกหนึ่งปุ่มอยู่ สิ่งเดียวที่เพจสามารถทำได้กับไดอะล็อกนั้นคือการกำหนดข้อความ ปุ่มและแถบหัวเรื่องเปลี่ยนไม่ได้ นี่คือภาพหน้าจอจาก Firefox 3.6: ( Firefox รุ่นเก่ามาก )

ภาพหน้าจอจาก Firefox 3.6

แน่นอนว่าเมื่อคุณให้คนอื่นแสดงป๊อปอัปด้วยข้อความใด ๆและเพียงแค่ปุ่มOK / Cancelคุณจะมั่นใจได้ว่าไม่ช้าก็เร็วบางคนก็จะใช้มันเพื่อคุณ

สกรีนช็อตของหน้าต่างที่เป็นอันตรายจาก Firefox 3.6

ในภาพหน้าจอด้านบนตกลงหมายถึงเพียงแค่ "ออกจากหน้านี้" แต่คำอธิบายที่กำหนดเองจะแนะนำอะไรเพิ่มเติม ดังนั้นเบราว์เซอร์จึงเปลี่ยนไดอะล็อกดังนั้นจึงยากที่จะทำให้เข้าใจผิด ตัวอย่างเช่น Firefox รุ่นล่าสุดดูเหมือนจะไม่สนใจข้อความที่กำหนดเอง:

สกรีนช็อตจาก Firefox 23

Chrome แสดงข้อความที่กำหนดเอง แต่จะต่อท้ายคำถามที่ถามผู้ใช้ว่าเขาต้องการทำอะไรและปุ่มแจ้งการกระทำของพวกเขาอย่างชัดเจน: (แต่ยังคงมีแนวโน้มข้อความ "วิดีโอแมว"!)

สกรีนช็อตจาก Chrome 29

นี่คือ Internet Explorer 10 เช่นกัน "cat-tend"

ภาพหน้าจอจาก IE 10

Opera 12 จะไม่สนใจonbeforeunloadกิจกรรมและหากคุณพยายามปิดแท็บเช่นนั้นกิจกรรมนั้นจะปิดเหมือนกัน ฉันยังไม่ได้ทดสอบ Opera ล่าสุด

ดังนั้นเพื่อสรุปสิ่งที่สำคัญที่สุด:

  • หน้าไม่สามารถแสดงข้อความโต้ตอบกับข้อความใด ๆ เว็บไซต์สามารถขอให้เบราว์เซอร์แสดงข้อความโต้ตอบพร้อมข้อความที่กำหนดเอง แต่เบราว์เซอร์สามารถละเว้นได้ทั้งหมด (Opera) ใช้ข้อความทั่วไป (Firefox) หรือพูดอย่างชัดเจนว่าจะเกิดอะไรขึ้น (Chrome, IE)
  • รายละเอียดของกล่องโต้ตอบขึ้นอยู่กับเบราว์เซอร์ที่คุณใช้ แต่ปุ่มนั้นไม่เปลี่ยนรูปเสมอ หากพวกเขาจะไม่พูดอย่างชัดเจนว่าใครทำอะไรก็โอเคหมายความว่า "ออกจากหน้านี้ * และยกเลิกคือ" อยู่ที่นี่ "
  • เว็บไซต์ไม่สามารถดำเนินการใด ๆ ที่เป็นอันตรายหากคุณตัดสินใจที่จะทิ้งไว้ ไฟล์ของคุณจะไม่ถูกแทนที่ด้วยวิดีโอแมวคุณจะไม่ถูกน้ำท่วมด้วยไวรัส 135234 และ FBI จะไม่ได้รับแจ้งว่าคุณมีซอฟต์แวร์ผิดกฎหมายในคอมพิวเตอร์ของคุณ

คุณสามารถปิดการใช้งานonbeforeunloadกิจกรรมได้หากคุณต้องการป้องกันไม่ให้เพจออกจากหรืออยู่ได้อย่างมีประสิทธิภาพ นี่เป็นเบราว์เซอร์UserScript (เลื่อนลงถ้าลิงค์ตาย)

หากคุณอยู่ในเว็บไซต์ที่ระบุว่ามีป๊อปอัปที่เป็นอันตรายและคุณยังกลัวที่จะคลิกทิ้งคุณสามารถสร้าง bookmarklet เพื่อลบออกได้ คลิกขวาที่แถบบุ๊กมาร์กของคุณเลือกบุ๊กมาร์กใหม่ (หรือเทียบเท่า) แล้ววางเป็น URL: (เป็นเพียงโค้ดย่อจากลิงก์ด้านบน)

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

จากนั้นเพียงคลิกที่บุ๊คมาร์คนั้นและป๊อปอัปจะถูกลบออกจากหน้าเว็บที่ใช้งานอยู่ชั่วคราว

หากคุณต้องการทดสอบว่าป๊อปอัปเหล่านั้นดูในเบราว์เซอร์ของคุณหรือทดสอบ bookmarklet / userscript ให้สร้างไฟล์ข้อความด้วยรหัสต่อไปนี้และบันทึกเป็น.htmlไฟล์:

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

ดูเหมือนว่าการเชื่อมโยง UserScript เป็นสิทธิที่ตายแล้วในขณะนี้ดังนั้นนี่คือสำเนาสกัดจากarchive.org แคช เครดิตทั้งหมดสำหรับผู้สร้างสคริปต์ต้นฉบับ

// ==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
ฉันจะกด "ตกลง" บนอันที่สอง ท้ายที่สุดใครไม่ต้องการวิดีโอแมวอีกต่อไป
Daniel R Hicks

Ooh, Javascript เพื่อปิดการใช้งานไดอะล็อก ดี!
user2357112 รองรับ Monica

น่าเสียดายที่ userscript นั้นใช้งานไม่ได้กับบางหน้าเว็บ ไดอะล็อกจะยังคงปรากฏขึ้นแม้จะมี window.onbeforeunload และ window.onunload เป็นโมฆะ ฉันไม่ทราบวิธีที่พวกเขาจัดการทำเช่นนั้นฉันคิดว่าตัวจัดการถูกเขียนทับในบางจุดจากนั้นนำกลับไปเป็นโมฆะในเหตุการณ์ onclick
Atan

10

ที่จริงแล้ว FireFox มีวิธีแก้ปัญหาที่ค่อนข้างดี (และง่าย) ถ้าคุณพิมพ์

about:config

ในแถบที่อยู่จากนั้นเลื่อนลงไปที่

dom.disable_beforeunload

และตั้งค่าเป็น True คุณจะไม่เห็นป๊อปอัปออกจากหน้าอีกต่อไป ใน FireFox น่าเสียดายที่ไม่มีวิธีแก้ไขปัญหาคล้าย ๆ กันใน Chrome


7

ทางออกที่ง่ายที่สุดใน Chrome คือการทำให้แท็บเสียหาย

ประเภทchrome: // ผิดพลาดในแถบที่อยู่และบันทึกเป็นบุ๊ก

ครั้งต่อไปที่คุณต้องการออกจากหน้าดังกล่าวเพียงแค่คลิกที่คั่นหน้าและมันจะฆ่าแท็บนั้นทันทีโดยไม่กระทบกับแท็บอื่น ๆ ของคุณ ไม่จำเป็นต้องฆ่าเซสชันเบราว์เซอร์ทั้งหมดตามที่คนอื่นแนะนำ

หรือคุณสามารถวางแท็บโดยใช้chrome: // hangจากนั้นก็ปิดแท็บโดยไม่เรียกใช้ JavaScript

ไม่แน่ใจว่าเป็นไปได้หรือไม่ในเบราว์เซอร์อื่น


เวอร์ชันใหม่ของหน้าเว็บเหล่านี้จะทำให้ป๊อปอัปอื่นปรากฏขึ้นที่การกระทำของผู้ใช้เช่นการคลิกเมาส์หรือกดปุ่มเพื่อให้คุณไม่สามารถใช้โครมได้อีกต่อไป: // crash
rsaxvc

1

นี่คือหน้าต่างเหตุการณ์ก่อนที่จะโหลดและคุณสมบัติของเว็บเบราว์เซอร์ ดังนั้นนี่ควรเป็นกล่องโต้ตอบที่คงที่ของเว็บเบราว์เซอร์ คุณสามารถลองในเบราว์เซอร์ที่แตกต่างกันและเพื่อให้คุณสามารถมองเห็นได้โต้ตอบอยู่ในการออกแบบที่แตกต่างกัน

แต่ฉันคิดว่าคุณสามารถพัฒนาป๊อปอัปด้วย javascript ซึ่งดูเหมือนจะคล้ายกับป๊อปอัพดั้งเดิมของเบราว์เซอร์ และถ้าเป็นนักพัฒนาที่ดีเขาก็จะตรวจสอบประเภทเบราว์เซอร์ก่อนที่จะแสดงข้อความ ;)

ดังนั้นเพื่อให้แน่ใจเกี่ยวกับกล่องโต้ตอบดั้งเดิมคุณควรตรวจสอบข้ามกล่องโต้ตอบที่ถูกต้องเช่นที่นี่: http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/onbeforeunload.htm

ดูที่นี่สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเหตุการณ์:
https://developer.mozilla.org/en-US/docs/Web/API/window.onbeforeunload
http://msdn.microsoft.com/en-us/library/ms536907% 28VS.85% 29.aspx


0

วิธีแก้ปัญหาอย่างรวดเร็วหากคุณไม่เชื่อถือ "ป๊อปอัป" & ความตั้งใจ / การกระทำ:

สำหรับ Chrome:

  • หลบหนีเพื่อลบป๊อปอัป

  • คลิกขวาที่หน้า

  • เลือกตรวจสอบ

  • เลื่อนไปด้านบน

  • คลิกขวาที่แท็ก

  • ลบโหนด

  • ปิดแท็บ

ฉันแน่ใจว่าเบราว์เซอร์อื่นมีตัวเลือกที่คล้ายกัน


3
วิธีแก้ปัญหาอย่างรวดเร็ว: คลิกออกจากหน้านี้เสมอ;)
gronostaj
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.