Per proteggersi dal clickjacking, è sicuro che una pagina Web mostri il suo contenuto fino a quando non viene rilevato il framing?

2

Supponiamo di avere una pagina web che non può utilizzare X-Frame-Options e la protezione di Clickjacking deve essere basata su JavaScript. In questa pagina, tutte le azioni sensibili e la visualizzazione delle informazioni sensibili sono basate su JS, quindi per il gusto della domanda possiamo supporre che JS sia abilitato e in esecuzione.

L'attuale tecnica standard prevede il confronto di self con top e di visualizzare il contenuto in base al risultato. Esempio da OWASP :

<style id="antiClickjack">body{display:none !important;}</style>

E poi cancella quello stile con il suo ID subito dopo nello script:

<script type="text/javascript">
   if (self === top) {
       var antiClickjack = document.getElementById("antiClickjack");
       antiClickjack.parentNode.removeChild(antiClickjack);
   } else {
       top.location = self.location;
   }
</script>

Chiamerei questo approccio "fail closed" perché il contenuto rimane invisibile fino a quando JS considera self uguale a top .

Esiste anche una tecnica "fail open" comunemente usata in cui, se self non è uguale a top , il contenuto è nascosto tramite CSS o impostando document.body.innerHTML='' .

Domanda : la seconda protezione può essere ignorata in modi altro rispetto all'utilizzo dell'attributo sandbox sull'iframe del genitore?

Non ci credevo finché non ho letto questo blog commentare confrontando le due tecniche e mi sono chiesto se "fail open" sia abbastanza sicuro:

"You could use various JS payloads on the parent page to make the framebusting script in the iframe fail, preventing it from hiding the content of the page. [...] The ones that instead make the content of the page appear if it is not being framed were and are still perfectly fine."

    
posta kazhtaco 23.06.2016 - 16:58
fonte

1 risposta

0

Come da articolo OWASP citato, ci sono alcuni esempi più in basso nella pagina . per esempio. Questo per impedire il caricamento del codice framebuster:

<iframe src="http://www.victim.com/?v=<script>if">

Questopuòesseremitigatotramitel'usodelle intestazioni di sicurezza :

X-XSS-Protection: 1; mode=block

Ciò impedirà il rendering dell'intera pagina nel caso in cui avvenga un attacco con una stringa di query.

    
risposta data 24.06.2016 - 17:18
fonte

Leggi altre domande sui tag