2012-02-23 10 views
5

En Chrome Recibo un error Refused to execute a JavaScript script. Source code of script found within request. después de publicar datos que contienen el nombre del dominio (también tenga en cuenta la falta de javascript en cualquiera de las páginas).Ignorando la etiqueta base después de la publicación

badpage1.html:

<form action="/badpage2.html" method="post"> 
<input type="hidden" name="name" value="href=%22http://www.w3.org/%22"/> 
<input type="submit" name="submit"/> 
</form> 

badpage2.html:

<!DOCTYPE html> 
<html> 
    <head> 
     <base href="http://www.w3.org/"/> 
    </head> 
    <body> 
     <img src="Icons/w3c_home" alt=""> 
    </body> 
</html> 

Si usted va directamente a badpage2.html la imagen se mostrará, pero si vas a la misma a través de badpage1.html, la imagen no se mostrará (tag de base no funciona).

¿Es esto un error en la detección de Chrome XSS? Y si no es así, ¿cómo evitaría esto? Parece tonto codificar los datos publicados solo para eludir este filtro.

EDIT:

En mi caso, el valor posterior enviado es actualizar parte del contenido de la página. El problema viene si contiene el nombre de dominio que se usa en el <base> (como lo hace este ejemplo) activará la detección XSS que desactiva la etiqueta <base>.

+0

Más sobre esto aquí - http://stackoverflow.com/questions/1547884/refused-to-execute-a-javascript-script-source -code-of-script-found-within-reque – simshaun

+0

@simshaun Vi eso, pero en este caso XSS es * intended * (ya que es un editor de CMS). ¿Hay algún encabezado que el servidor pueda enviar o algo para decirle a Chrome que desactive este tipo de comprobaciones? –

+0

Lo único que puedo encontrar es http://lwn.net/Articles/360424/, que apunta a algunos [errores] (https://bugs.webkit.org/buglist.cgi?keywords=XSSAuditor&resolution=---) en el filtro. Supongo que el filtro funciona en más que simples scripts, por lo que el mensaje de error es confuso. El problema real es establecer el href base en un dominio externo. AFAIK, esto viola el modelo de seguridad de la mayoría de los navegadores. No estoy seguro de si hay un sitio de trabajo confiable para él, y aunque sea así, probablemente no sea una buena idea (en mi opinión). ¿No puedes preprocesar la página para poner la URL completa en cualquier atributo src o href relativo? – simshaun

Respuesta

3

Descubrí que puedo enviar el encabezado HTTP personalizado X-XSS-Protection en la página que se está arruinando debido a la protección.

que usar el siguiente código para mi solución PHP:

header("X-XSS-Protection: 0"); 
Cuestiones relacionadas