Foros del Web » Programando para Internet » Javascript »

internet explorer y horrores

Estas en el tema de internet explorer y horrores en el foro de Javascript en Foros del Web. ayudando a otra persona encontre un error de iexplore del cual me gustaria compartir. en este tema mostrare el codigo con el único proposito de ...
  #1 (permalink)  
Antiguo 06/08/2009, 19:12
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Exclamación internet explorer y horrores

ayudando a otra persona encontre un error de iexplore del cual me gustaria compartir. en este tema mostrare el codigo con el único proposito de advertir a los desarrolladores acerca de este error y por ende evitarlo. en adicion, desconozco cuan grave es este error. es decir, si a traves de este error se consiga explotar (exploit) el sistema. lo publico ya que en ningun lugar de la web consigo informacion, además de haberme visto limitado en poder reportar este error a Microsoft.

el error consiste cuando se intentar asignar un string desde un elemento a la propiedad cssText del objeto styleSheet. el error es tan grave que produce un cuelgue de iexplore, tanto en version 6 y 7. no lo he intentado en la version 8, lo cual me gustaria si alguien pudiera confirmarlo. he intentado varias formas del codigo siempre produciendome el mismo resultado. a continuación, cada bloque de codigo son los diferentes intentos. fijense que el codigo no varia mucho, solamente cambia de donde se intenta obtener el string.

Código:
<html><head><style type="text/css"></style>
<script type="text/javascript">
onload = function(){
document.styleSheets[0].cssText = document.getElementById("some").value;
}
</script></head>

<body>
<input type="text" id="some" value="" /><!-- notese que value esta vacio -->
</body></html>
Código:
<html><head><style type="text/css"></style>
<script type="text/javascript">
onload = function(){
var input = document.createElement("input");
document.styleSheets[0].cssText = input.value;
}
</script></head>

<body>
Empty
</body></html>
Código:
<html><head><style type="text/css"></style>
<script type="text/javascript">
onload = function(){
document.styleSheets[0].cssText = document.getElementById("some").innerHTML;
}
</script></head>

<body>
<h1 id="some"> </h1><!-- notese el espacio dentro de H1, se produce tanto con cualquier caracter en blanco (white-space character: espacio, tabular, salto de linea) como vacio -->
</body></html>
sin embargo, el proximo codigo no cuelga iexplorer.
Código:
<html><head><style type="text/css"></style>
<script type="text/javascript">
var text = ""; // string vacio;
onload = function(){
document.styleSheets[0].cssText = text;
}
</script></head>
<body></body></html>
utilizando la misma base del anterior, almacenando en una variable el string.
Código:
<html><head><style type="text/css"></style>
<script type="text/javascript">
onload = function(){
// almacenando el contenido en una variable para luego asignarla
var text = document.getElementById("some").innerHTML;
document.styleSheets[0].cssText = text;
}
</script></head>

<body>
<h1 id="some"> </h1>
</body></html>
conclusion. tenemos que ser cuidadoso y consciente de donde viene la cadena. como se demostro, cuando la cadena viene de una variable de javascript iexplorer no se cuelga. sin embargo, si la fuente viene de un elemento, independientemente se haya creado el elemento con javascript o este presente en el documento, iexplorer se cuelga. lo que me deja pensando es que este error debe estar relacionado al DOM y a los espacios en blanco. pues como alguno de ustedes ya sabran, el agente de iexplorer no genera nodo en aquellos elementos que no contiene caracteres imprimibles.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 06/08/2009 a las 19:20

Etiquetas: explorer, internet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:17.