2011-10-21 13 views
52

Stavo cercando di colpire un servizio web su un dominio diverso usando il metodo Ajax di jQuery. Dopo aver fatto qualche ricerca sembra che questo non consenta che questo sia di progettazione per prevenire lo scripting cross-site.

mi sono imbattuto in un lavoro in giro che doveva includere questa linea:

$.support.cors = true; 

nella parte superiore del mio codice javascript. Da quello che ho capito, questo abilita lo scripting cross-site in jQuery.

L'utilizzo di questa riga di codice rende il sito più vulnerabile agli attacchi? Ho sempre sentito XSS discusso come un problema di sicurezza, ci sono usi legittimi per XSS?

+8

Sfondo: http://api.jquery.com/jQuery.support/ Non penso che l'impostazione * abiliti * qualsiasi cosa però. Dice solo a jQuery cosa è supportato –

+3

@Pekka - Lo stesso documento che colleghi dice esattamente il contrario. –

+3

@Alvaro non abilitare * CORS impostando tale variabile. Dici solo a jQuery che sei in un ambiente in cui sono possibili richieste XHR tra domini. (Quindi, concesso, abiliti il ​​loro uso in jQuery, abbastanza giusto. –

risposta

35

XSS non è una funzione che può essere abilitata in jQuery. Sarebbe molto molto insolito se il core jQuery avesse una vulnerabilità XSS, ma è possibile e si chiama DOM-based XSS.

"Cross-Origin Resource Sharing" o CORS non è la stessa come XSS, MA, ma se un'applicazione web ha avuto una vulnerabilità XSS, quindi un attaccante avrebbero accesso CORS simile a tutte le risorse su quel dominio . In breve, CORS ti dà il controllo su come suddividere lo same origin policy in modo tale che non sia necessario introdurre una vulnerabilità completa in XSS.

La funzione di query $.support.cors si basa sull'intestazione di risposta HTTP Access-Control-Allow-Origin. Questo potrebbe essere una vulnerabilità. Ad esempio, se un'applicazione Web avesse Access-Control-Allow-Origin: * in ogni pagina, un utente malintenzionato avrebbe lo stesso livello di accesso di una vulnerabilità XSS. Fai attenzione a quali pagine hai introdotto le intestazioni CORS e cerca di evitare il più possibile il *.

Quindi, per rispondere alla tua domanda: NO un'applicazione web non ha mai bisogno di introdurre una vulnerabilità XSS, perché ci sono modo per aggirare il SOP come CORS proxy/jsonp/cross domain/access-control-origin.

+0

Se si dispone di un semplice GET che si desidera abilitare solo e si dispone di sottodomini attraverso un sito Web, come si ha il comportamento predefinito: lo stile visitato funziona in un collegamento. Non hai dato la tua filosofia. –

+3

@ kitgui.com Non ho idea di cosa stai chiedendo o cosa ha a che fare con la sicurezza. – rook

+1

non c'è? alla fine. –

11

Si può aiutare solo se si dispone CORS abilitati nel browser, ma non è ancora supportato da jQuery:

per attivare le richieste cross-domain in ambienti che non supportano cors ancora ma consentono richieste XHR tra domini (gadget Windows, ecc.), set $ .support.cors = true ;. CORS WD

L'impostazione corretta di questa proprietà su true non può causare vulnerabilità alla sicurezza.

3

Quando un hacker è in grado di iniettare codice di script per modificare le richieste in un altro dominio, è anche in grado di impostare questo flag javascript nello script.

Quindi, se questo flag è impostato, non cambia molto in questo punto dell'intrusione.

+2

Questo in realtà non risponde alla domanda. Al punto di intrusione, tutte le scommesse sono spente; ma l'idea è di impedire che ciò accada. – jpaugh

Problemi correlati