I browser generalmente includono la protezione click-jacking per i loro popup interni . Ad esempio per impedirti di aprire accidentalmente un file scaricato senza rendertene conto.
Tuttavia, nello scenario che descrivi, la responsabilità della protezione è nel sito che ospita il pulsante Consenti accesso. (in questo caso, Google) Non esiste soluzione al 100% pazzo a prova di utente. Quindi, purtroppo, parte di questo deve essere un'iniziativa generale anti-phishing. (Google cerca di database siti dannosi, ma questo è un sistema reazionario.)
La forma più semplice di click-jacking è ovviamente la navigazione o un popup semplice attivato dal primo dei due clic. I blocchi popup non hanno effetto quando il popup viene attivato direttamente dal clic dell'utente e, naturalmente, i blocchi popup non interrompono la semplice navigazione.
Is there any way a site can protect against it?
-
Google include un tempo minimo prima che il pulsante Approve inizi a funzionare?
-
In questo caso, la pagina di Google potrebbe non caricarsi abbastanza velocemente da catturare il secondo clic.
La tecnica pop-under è un modo intelligente per assicurarsi che la pagina sia stata caricata in anticipo.
- Chiedi all'utente di fare clic su qualcosa.
- Apri la pagina Consenti e chiama immediatamente
self.focus()
portando il sito dannoso in primo piano.
- Al primo clic,
popup.focus()
per portarlo in primo piano, in modo che il secondo clic visualizzi Consenti.
Questo è lo scenario che hai descritto, ma in realtà non funziona (per fortuna) a causa della stessa politica di origine, impedendo al sito dannoso di chiamare .focus()
se il popup si trova su un altro sito.
Purtroppo , il seguente potrebbe funzionare
- Chiedi all'utente di fare clic su qualcosa.
- Apri un "popup dannoso".
- Chiedi all'utente di fare clic su qualcosa di diverso.
- Apri la pagina Consenti e chiama immediatamente
self.focus()
portando in primo piano "popup dannosi".
- Al primo clic,
self.close()
per sbarazzarsi di "popup dannoso", quindi il secondo clic farà clic su Consenti.
Is there any way a site can protect against it?
-
Una cosa veramente semplice è controllare history.length == 1
, e se questo è il caso, Google sa che è stato aperto tramite popup. Questa non è una soluzione completa.
-
Google può utilizzare gli API Visibility e / o self.onfocus
e self.onblur
per richiedere un tempo minimo prima che il clic abbia effetto. Penso che questa possa essere una protezione completa. Ma è soggetta al supporto del browser.
Posso immaginare uno scenario più complesso in cui il logo di Google è nascosto da altri popup, in modo da ingannare l'utente.
Is there anything a user ... can do to prevent this?
Assicurati di non fare doppio clic su un sito di cui non ti fidi. In realtà stare lontano da qualsiasi sito sospetto. ☺