Perché gli iframe sono considerati pericolosi e un rischio per la sicurezza? Qualcuno può descrivere un esempio di un caso in cui può essere utilizzato in modo dannoso?
Perché gli iframe sono considerati pericolosi e un rischio per la sicurezza? Qualcuno può descrivere un esempio di un caso in cui può essere utilizzato in modo dannoso?
Risposte:
Non appena visualizzi contenuti da un altro dominio, in pratica ti fidi di quel dominio per non diffondere malware.
Non c'è niente di sbagliato negli iframe di per sé. Se controlli il contenuto dell'iframe, sono perfettamente al sicuro.
<iframe>
elemento) ha uno stile appropriato e suggerisce che l'iframe contiene contenuti non attendibili, non ci sono problemi. Modulo di vulnerabilità reali nel browser, ovviamente. In breve, un <iframe>
è sicuro quanto un <a href>
.
<iframe>
dallo stesso dominio può causare rischi per la sicurezza se il contenuto all'interno dell'iframe nascosto può essere modificato dall'autore dell'attacco. Ciò consentirà all'attaccante di estendere l'attacco XSS all'interno del nascosto <iframe>
a qualsiasi pagina del tuo sito che fa riferimento a detto <iframe>
contenuto. Vedi stackoverflow.com/a/9428051/334451 per i dettagli.
L' IFRAME
elemento può rappresentare un rischio per la sicurezza se il tuo sito è incorporato in un IFRAME
sito ostile . Google "clickjacking" per maggiori dettagli. Si noti che non importa se si utilizza <iframe>
o meno. L'unica vera protezione da questo attacco è aggiungere l'intestazione HTTP X-Frame-Options: DENY
e sperare che il browser conosca il suo lavoro.
Inoltre, l' elemento IFRAME può rappresentare un rischio per la sicurezza se una qualsiasi pagina del tuo sito contiene una vulnerabilità XSS che può essere sfruttata . In tal caso, l'attaccante può espandere l'attacco XSS a qualsiasi pagina all'interno dello stesso dominio che può essere persuaso a caricare all'interno di una <iframe>
pagina con vulnerabilità XSS. Questo perché il contenuto dalla stessa origine (stesso dominio) è autorizzato ad accedere al contenuto genitore DOM (praticamente esegue JavaScript nel documento "host"). L'unico vero metodo di protezione da questo attacco è aggiungere l'intestazione HTTP X-Frame-Options: DENY
e / o codificare sempre correttamente tutti i dati inviati dagli utenti (cioè, non avere mai una vulnerabilità XSS sul tuo sito - più facile a dirsi che a farsi).
Questo è il lato tecnico del problema. Inoltre, c'è il problema dell'interfaccia utente. Se insegni ai tuoi utenti a fare affidamento sul fatto che la barra degli URL non dovrebbe cambiare quando fanno clic sui collegamenti (ad es. Il tuo sito utilizza un grande iframe con tutto il contenuto effettivo), gli utenti non noteranno nulla in futuro neanche in caso di effettiva sicurezza vulnerabilità. Ad esempio, potresti avere una vulnerabilità XSS all'interno del tuo sito che consente all'autore dell'attacco di caricare contenuti da una fonte ostile all'interno del tuo iframe. Nessuno è stato in grado di distinguere perché la barra degli URL sembra ancora identica al comportamento precedente (non cambia mai) e il contenuto "sembra" valido anche se proviene da un dominio ostile che richiede le credenziali dell'utente.
Se qualcuno afferma che l'utilizzo di un <iframe>
elemento sul tuo sito è pericoloso e causa un rischio per la sicurezza, non capisce quale <iframe>
elemento lo fa o sta parlando della possibilità di <iframe>
vulnerabilità correlate nei browser. La sicurezza del <iframe src="...">
tag è uguale <img src="..."
o <a href="...">
fintanto che non ci sono vulnerabilità nel browser. E se c'è una vulnerabilità adeguata, potrebbe essere possibile attivarla anche senza utilizzare <iframe>
, <img>
o <a>
element, quindi non vale la pena considerare questo problema.
Tuttavia, tieni presente che il contenuto di <iframe>
può avviare la navigazione di primo livello per impostazione predefinita . Cioè, il contenuto all'interno di <iframe>
può aprire automaticamente un collegamento sulla posizione della pagina corrente (la nuova posizione sarà visibile nella barra degli indirizzi). L'unico modo per evitarlo è aggiungere un sandbox
attributo senza valore allow-top-navigation
. Ad esempio <iframe sandbox="allow-forms allow-scripts" ...>
,. Sfortunatamente, sandbox disabilita anche tutti i plugin, sempre. Ad esempio, i contenuti di Youtube non possono essere sottoposti a sandbox perché Flash Player è ancora necessario per visualizzare tutti i contenuti di Youtube. Nessun browser supporta l'utilizzo di plug-in e la disabilitazione della navigazione di primo livello allo stesso tempo.
Tieni presente che X-Frame-Options: DENY
protegge anche dall'attacco del canale laterale delle prestazioni di rendering in grado di leggere il contenuto tra le origini (noto anche come " Pixel Perfect Timing Attacks ").
"This is because content from the same origin (same domain) is allowed to access the parent content DOM (practically execute JavaScript in the "host" document)."
essere riformulato nella direzione del documento (genitore) contenente una vulnerabilità XSS al documento (figlio) nell'iframe?
<iframe>
su una pagina, consente di estendere la vulnerabilità dal contenuto all'interno dell'iframe al documento host. La domanda riguardava l' <iframe>
essere pericolosi e se il documento host ha una vulnerabilità XSS, non hai davvero bisogno <iframe>
dell'elemento.
Suppongo che iFrame cross-domain poiché presumibilmente il rischio sarebbe inferiore se lo controllassi da solo.
"Pericoloso" e "Rischio per la sicurezza" non sono le prime cose che vengono in mente quando le persone menzionano iframe ... ma possono essere usati negli attacchi di clickjacking .
iframe è anche vulnerabile al Cross Frame Scripting: