Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/10/2007, 12:25
clinisbut
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 11 meses
Puntos: 0
Evitar carga desde dentro iframe

Estoy intentando crear una serie de operaciones basicas para evitar un poco el XSS en mi pagina y hoy tocaba evitar que se cargara dentro de un frame.

En gmail he visto que usan este codigo para evitar esto:
Código:
function wfs() {

try {
if (parent!=window && parent.wfs) {
return false;
}
}catch(e){}


if (top.location.href.indexOf('nocheckbrowser')!=-1) {
return true;
}
Esto devuelve false si se carga dentro de algun frame externo;
Si devuelve true, cargan el codigo de la aplicacion dentro de un frame que tienen ellos, de lo contrario la pagina se queda en blanco.

Mi pagina no contiene ningun frame donde YO cargue el contenido. Es una pagina normal sin frames, por lo tanto debo adaptar el codigo para conseguir que si esta función devuelve false, la carga de la pagina se detenga.

Una primera aproximación fué esta:
Código:
function noIframe()
{
	try
	{
		if( window.parent!=window && !parent.noIframe() )
			return false;
		else
			return true;
	}
	catch(e){}	
}
if( !noIframe() )
{	window.stop();
}
Lo que hace es detener la carga de la pagina. EL problema esque IE como siempre da por culín, y no se traga el window.stop().

Por lo que he optado por:
Código:
if( !noIframe() )
     parent.location.href = self.document.location;
Que hace que el parent (quien supuestamente esta cargando nuestra pagina desde un iframe) se redirija a nuestra dirección correctamente.

Esta función tiene contemplado el hecho de que existan varios Iframes anidados y que el ultimo cargue nuestra pagina.

Mi duda es si esto es eficaz, ya que si hay muchos iframes, cada uno de ellos realizará una redirección a nuestra pagina, todos a la vez y consecutivamente hacia arriba... nose si me explico... puede esto ser un peligro a su vez??