Come evitare il clickjacking in HTML e Javascript

0

Ho provato a inserire il seguente codice in HTML ma non mi aiuta a evitare il clickjacking:

meta http-equiv="X-Frame-Options" content="DENY"

Ho scritto il seguente codice in Javascipt:

if (self == top) {
            document.documentElement.style.display = 'block';
        } else {
            top.location.replace(document.location);
        }

Questo risolve il mio problema, ma non voglio reindirizzare un nuovo URL, ma, invece, voglio mostrare l'URL clickjacking con un iFrame vuoto.

Questo è il codice HTML che sto usando per testare il clickjacking:

    iframe { 
    width: 800px; 
    height: 1000px; 
    position: absolute; 
    top: 0; left: 0; 
    filter: alpha(opacity=50); 
    opacity: 0.5; 
    }  

<iframe src="URL">

Voglio visualizzare solo una cornice vuota quando eseguo il codice sopra.

    
posta Shreya Srivastava 12.04.2017 - 10:19
fonte

3 risposte

1

Nascondi l'intera pagina:

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

E rimuovi l'elemento stile se questa finestra è la finestra livello lop:

<script type="text/javascript">
   if (self === top) {
       var antiClickjack = document.getElementById("antiClickjack");
       antiClickjack.parentNode.removeChild(antiClickjack);
   }
</script>
    
risposta data 12.04.2017 - 10:50
fonte
1

Il tuo codice

meta http-equiv="X-Frame-Options" content="DENY"

non ha alcun effetto. Da MDN :

Note: Setting the meta tag is useless! For instance, <meta http-equiv="X-Frame-Options" content="deny"> has no effect. Do not use it! Only by setting through the HTTP header like the examples below, X-Frame-Options will work.

Il modo consigliato è utilizzare frame-ancestors all'interno di una politica di sicurezza dei contenuti, tuttavia non può essere utilizzato in un metatag per questo scopo . Cioè, per sconfiggere in modo affidabile il clickjacking hai bisogno del controllo delle intestazioni HTTP, non solo dell'HTML.

Le soluzioni JavaScript possono spesso essere aggirate e non sono raccomandate in generale. Se devi, OWASP ha questo che funziona perché è progettato sulla base del fatto che tutto è nascosto fino all'esecuzione dello script per verificare che non sia stato incorniciato.

Potrebbe essere modificato in:

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

se non vuoi alcun reindirizzamento.

    
risposta data 12.04.2017 - 11:22
fonte
1

La politica di sicurezza dei contenuti è ora il metodo preferito per impedire che il tuo sito venga inserito in un iframe di un altro sito. In effetti, altri metodi meno recenti come il metodo JavaScript mostrato qui non funzioneranno più sulla maggior parte dei browser. Puoi leggere ulteriori informazioni su CSP qui: link

Un'intestazione di criterio di esempio potrebbe avere un aspetto simile a questo per consentire al tuo sito di essere incorniciato sul tuo dominio e su www.friend_site.com:

Content-Security-Policy: frame-ancestors 'self' www.friend_site.com

Oppure potresti utilizzare none se non vuoi consentire al tuo sito di avere iframe:

Content-Security-Policy: frame-ancestors 'none'
    
risposta data 27.06.2017 - 19:31
fonte

Leggi altre domande sui tag