2009-06-23 17 views
7

He buscado y probado, pero no veo dónde puedo detener el hecho de que pueda navegar por mi sitio a través de un IFrame o Thickbox?Detener a cualquiera al ver mi sitio con un IFrame

Quiero evitar que los miembros bloqueados accedan al sitio a través de sitios proxy que le dan al usuario final la capacidad de navegar a través de un IFrame. Sé que nada puede ser una prueba completa, pero aún vale la pena la pregunta.

Respuesta

15

Echa un vistazo a los comentarios de SO propio de Jeff Atwood sobre este problema ...

Coding Horror - We Done Been ... Framed!

Lo que se reduce a es que no hay Forma confiable de hacer esto. Puede probar un desglose de cuadros, pero los codificadores maliciosos siempre podrán agregar un poco más de código y evitar cualquier "protección" que pueda agregar.

+0

Pásame a ello. Estoy eliminando mi respuesta ya que es casi un duplicado exacto tuyo. – Travis

+1

Hubo una respuesta a su publicación de blog de Jeff Atwoods que funciona (y, de hecho, Jeff Atwood se refiere a su trabajo en su publicación de blog), he actualizado mi respuesta en respuesta. La publicación que doy es más reciente, tiene solo 5 días. – cgp

+0

Enlace roto ... respuesta inútil :( – Salketer

8

Ah, pero aquí está el response a Jeff Atwoods blog post. (el desglose anti-anti-marco) es posible.

Go figure, it was a question on Stackoverflow as well. Publicado por guess who? La respuesta es similar al enlace que he publicado:

if(top != self) { 
top.onbeforeunload = function() {}; 
top.location.replace(self.location.href); 
} 
+0

Estos métodos no son, pero no hay otra manera, como se muestra por el segundo enlace. – cgp

+0

¿Qué sucede si tuviera que definir un nuevo método (en blanco) de alerta() en la página superior ... a qué versión llamaría el niño? Interesante expiración, pero si el niño llamó al método equivocado ... la alerta en blanco() evitaría que se muestre la alerta, lo que reventó la ruptura del anti-anti-marco. –

+0

... no pasa nada. Como yo esperaba. Doh. ¡Parece un buen candidato para el golf de código! –

1

altCognito tiene razón, quiere romper una ruptura de fotograma.

A continuación se muestra el código fuente de the post altCognito le envió.

<script type="text/javascript"> 
if (top.location != self.location) 
top.location = self.location; 
</script> 

Sin embargo, creo que incluso podría querer ir más allá. Es posible que desee tener una serie de cheques que busque no solo superior sino también matriz y ventana.

<script type="text/javascript"> 

var self = self.location; 
var top = top.location; 
var parent = parent.location; 
var window = window.location; 

if (top != self || parent != self || window != self ) 
window = self; 
</script> 
0
<script> 
    var isInIframe = (window.location != window.parent.location) ? true : false; 

    if(isInIframe) 
    { 
    alert("Window is in iframe"); 
    //Do what you want 
    //top.location.href=self.location; 
    } 
    else 
    { 
    alert("Window is not in iframe"); 
    } 
</script> 
0

puede probar este sencillo js en el archivo de cabecera

if (window.top !== window.self) window.top.location.replace(window.self.location.href); 
Cuestiones relacionadas