Cómo evitar el clickjacking en HTML y Javascript

0

Intenté colocar el siguiente código en HTML, pero no me está ayudando a evitar el clickjacking:

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

Escribí el siguiente código en Javascipt:

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

Esto resuelve mi problema, pero no quiero redirigirlo a una nueva URL, pero en cambio, quiero mostrar la URL de clickjacking con un iFrame vacío.

Este es el código HTML que estoy usando para probar clickjacking:

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

<iframe src="URL">

Quiero mostrar solo un marco vacío cuando ejecuto el código anterior.

    
pregunta Shreya Srivastava 12.04.2017 - 10:19
fuente

3 respuestas

1

Ocultar toda la página:

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

Y elimine ese elemento de estilo si esta ventana es la ventana de nivel lop:

<script type="text/javascript">
   if (self === top) {
       var antiClickjack = document.getElementById("antiClickjack");
       antiClickjack.parentNode.removeChild(antiClickjack);
   }
</script>
    
respondido por el Sjoerd 12.04.2017 - 10:50
fuente
1

Tu código

  

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

no tiene efecto. De MDN :

  

Nota: ¡Configurar la metaetiqueta es inútil! Por ejemplo, <meta http-equiv="X-Frame-Options" content="deny"> no tiene efecto. ¡No lo uses! Solo configurando a través del encabezado HTTP como en los ejemplos a continuación, las opciones de marco de X funcionarán.

La forma recomendada es usar frame-ancestors dentro de una Política de seguridad de contenido, sin embargo esto no se puede usar en una etiqueta meta para esto propósito . Es decir, para vencer de manera confiable el clickjacking, necesita el control de los encabezados HTTP, no solo el HTML.

Las soluciones de JavaScript a menudo se pueden omitir y generalmente no se recomiendan. Si tiene que hacerlo, OWASP tiene este que funciona porque está diseñado en base a lo que todo está oculto hasta que se ejecuta el script para verificar que no esté enmarcado.

Se podría modificar para:

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

si no desea ninguna redirección.

    
respondido por el SilverlightFox 12.04.2017 - 11:22
fuente
1

La Política de seguridad del contenido es ahora el método preferido para evitar que su sitio se coloque en un iframe de otro sitio. De hecho, otros métodos antiguos como el método de JavaScript que se muestra aquí ya no funcionarán en la mayoría de los navegadores. Puedes leer más sobre CSP aquí: enlace

Un encabezado de política de muestra podría tener un aspecto similar al siguiente para permitir que su sitio se enmarque en su propio dominio y www.friend_site.com:

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

O puede usar none si no quiere permitir su sitio en cualquier marco:

Content-Security-Policy: frame-ancestors 'none'
    
respondido por el cianmce 27.06.2017 - 19:31
fuente

Lea otras preguntas en las etiquetas