Funzionalità di sicurezza: impedendo a javascript di chiudere la finestra

2

Le ultime versioni della maggior parte dei browser web hanno implementato una funzione per impedire a javascript di chiudere la finestra o la scheda corrente.

Firefox window.close () metodo

This method is only allowed to be called for windows that were opened by a script using the window.open() method. If the window was not opened by a script, the following error appears in the JavaScript Console: Scripts may not close windows that were not opened by script.

La stessa cosa vale per Internet Explorer e Chrome ma non sono riuscito a trovare un documento ufficiale per questa caratteristica da collegare qui.

La mia domanda è "Perché i browser impediscono a javascript di chiudere la finestra corrente a meno che quella finestra non sia stata aperta tramite uno script stesso? Quali tipi di attacchi o casi di abuso sono difesi da questa funzione?"

    
posta Silverfox 11.04.2016 - 13:51
fonte

2 risposte

3

Il motivo per cui questa limitazione è applicata, è che il criterio SOP non si applica a window.close (), invece, puoi effettivamente chiudere qualsiasi finestra. Sarebbe impossibile applicare il criterio SOP a window.close () come di consueto, ogni finestra in un processo del browser è isolata l'una dall'altra per impedire certi attacchi di confine, quindi anche le "proprie finestre" si troveranno in un altro SOP ambito di applicazione.

Un processo comune in cui viene utilizzato, è in una procedura di pagamento, in cui il sito web apre una finestra per il pagamento, e quando il sito webshop rileva che il pagamento è completo, la finestra viene chiusa.

Per impedire l'abuso di questa funzionalità, ad esempio, per chiudere le finestre di altri siti, viene impostata la limitazione che solo le finestre aperte da uno script potrebbero essere chiuse.

Nelle circostanze in cui si desidera disconnettere o spostare un utente dalla pagina, l'azione normale consiste nell'imporre la non cacheabilità e quindi utilizzare window.location.href per spostare l'utente in una pagina "disconnessa".

    
risposta data 11.04.2016 - 15:50
fonte
0

In particolare, per evitare che i siti che soffrono di difetti XSS siano "auto-chiusi" da script malevoli. Anche se le pagine aperte da script potrebbero ancora risentire del problema ...

Si potrebbe sostenere che "qualsiasi sito incline all'XSS potrebbe essere sfregiato comunque".

È vero, ma come ha commentato Matthew, almeno non si "perdere" la cronologia (che potrebbe essere facilmente ripristinata al prezzo di pochi clic) e, possibilmente, i download correnti (si noti che ora i browser moderni si aprono un messaggio "Sei sicuro di voler annullare il download?", ma non era il caso prima)

    
risposta data 11.04.2016 - 14:15
fonte

Leggi altre domande sui tag