2011-10-21 12 views
52

Estaba intentando conectar un servicio web en un dominio diferente utilizando el método ajax de jQuery. Después de investigar un poco, parece que no permite que esto sea por diseño para evitar la creación de scripts entre sitios.

me encontré con un trabajo en torno a la cual fue incluir esta línea:

$.support.cors = true; 

en la parte superior de mi código Javascript. Por lo que entiendo, esto permite la creación de scripts entre sitios en jQuery.

¿Tener esta línea de código hace que mi sitio sea más vulnerable al ataque? Siempre he escuchado hablar de XSS como un problema de seguridad, ¿hay usos legítimos para XSS?

+8

Antecedentes: http://api.jquery.com/jQuery.support/ No creo que la configuración * permita * nada. Simplemente le dice a jQuery qué es compatible con –

+3

@Pekka: el mismo documento que vincula dice exactamente lo contrario. –

+3

@Alvaro no * habilita * CORS configurando esa variable. Simplemente le dice a jQuery que se encuentra en un entorno donde las solicitudes XHR de dominios cruzados son posibles. (Entonces, concedido, habilitas su uso en jQuery, es suficiente.) –

Respuesta

35

XSS no es una función que se puede habilitar en jQuery. Sería muy muy inusual si el núcleo jQuery tenía una vulnerabilidad XSS, pero es posible y se llama DOM-based XSS.

"de origen cruzado de intercambio de recursos" o CORS no es lo mismo que XSS, PERO, pero si una aplicación web tenía una vulnerabilidad XSS, entonces el atacante tendría acceso CORS-como a todos los recursos en ese dominio . En resumen, CORS le da control sobre cómo se rompe el same origin policy de manera que no es necesario introducir una vulnerabilidad completa de XSS.

La función de consulta $.support.cors se basa en el encabezado de respuesta HTTP Access-Control-Allow-Origin. Este podría ser una vulnerabilidad. Por ejemplo, si una aplicación web tiene Access-Control-Allow-Origin: * en cada página, un atacante tendría el mismo nivel de acceso que XSS vulenrablity. Tenga cuidado con las páginas que introduce los encabezados CORS, y trate de evitar el * tanto como sea posible.

Así que para responder a su pregunta: NO una aplicación web no tiene que introducir una vulnerabilidad XSS porque hay camino alrededor de la SOP como CORS proxies/jsonp/cruz de dominio/access-control-origin.

+0

Si tiene un GET simple que desea habilitar solo y tiene subdominios en un sitio web, entonces, ¿cómo tiene el valor predeterminado: el comportamiento del estilo visitado funciona en un enlace. No le das tu filosofía. –

+3

@ kitgui.com no tengo idea de lo que está preguntando o qué tiene que ver con la seguridad. – rook

+1

no hay? al final. –

11

Puede ayudar sólo si tiene CORS habilitadas en su navegador pero no está apoyado por jQuery todavía:

Para permitir solicitudes entre dominios en ambientes que no son compatibles coros todavía pero que permiten solicitudes XHR entre dominios (gadget de Windows, etc.), configure $ .support.cors = true ;. CORS WD

Simplemente estableciendo esta propiedad en true no puede causar vulnerabilidad a la seguridad.

3

Cuando un pirata informático es capaz de inyectar código de script para cambiar las solicitudes a otro dominio, también puede establecer este indicador de javascript en el script.

Por lo tanto, si esta bandera está establecida no cambia mucho en este punto de la intrusión.

+2

Esto realmente no responde la pregunta. En el momento de la intrusión, todas las apuestas están apagadas; pero la idea es evitar que eso suceda. – jpaugh

Cuestiones relacionadas