Written by: thempra on 01/08/2008 @ 08:00
Uno de los grandes problemas que tenemos en lo referente a seguridad web,
son los temido ataques «cross-site scripting». Algo que navegadores como
IE (Internet Explorer) solventa con la negacion por defecto de acceso a scripts
que estan hospedados en dominios distintos a los de nuestras aplicacion. Algo
que otros navegadores no han optado por llevarlo desde un inicio.
Esto nos lleva a que si tenemos que empotrar nuestro desarrollo dentro de
un iframe de terceros, hospedados ambos en servidores distintos nuestra
aplicacion funcionara perfectamete en Firefox, Safari, ….. pero no en IE,
dandonos el error de «Access is denied» a ese script.
La solucion es bastante mas sencilla de lo que hayamos podidos leer en
otros sitios (1
y 2),
simplemente tendremos que agregar a nuestra pagina o master page (dependiendo de
donde nos convenga) el siguiente script:
<scripttype=
«text/javascript«>
if (Sys.Browser.agent == Sys.Browser.InternetExplorer){
Sys.UI.DomElement.getLocation=function(a){
if(a.self||a.nodeType===9)
return new Sys.UI.Point(0,0);
var b=a.getBoundingClientRect();
if(!b)
return new Sys.UI.Point(0,0);
var c=a.document.documentElement,d=b.left-2+c.scrollLeft,e=b.top-2+c.scrollTop;
try{
var g=a.ownerDocument.parentWindow.frameElement||null;
if(g){
var f=2-(g.frameBorder||1)*2;
d+=f;e+=f
}
}catch(h){}
return new Sys.UI.Point(d,e)}};
</script>
Espero que os sea util, y no os saque de vuestras casillas las distintas
politicas e interpretaciones de cada navegador.