52 votes

Est-il sûr d'utiliser $.support.cors = true ; dans jQuery ?

J'ai essayé d'atteindre un service web sur un domaine différent en utilisant la méthode ajax de jQuery. Après avoir fait quelques recherches, il semble qu'il ne permette pas cela par conception pour empêcher le cross site scripting.

J'ai trouvé une solution qui consistait à inclure cette ligne :

$.support.cors = true;

en haut de mon code javascript. D'après ce que j'ai compris, cela permet le cross site scripting dans jQuery.

Cette ligne de code rend-elle mon site plus vulnérable aux attaques ? J'ai toujours entendu parler du XSS comme d'un problème de sécurité. Y a-t-il des utilisations légitimes du XSS ?

35voto

Rook Points 34698

XSS n'est pas une fonctionnalité qui peut être activée dans jQuery. Il serait très très inhabituel si le noyau de jQuery avait une vulnérabilité XSS, mais c'est possible et cela s'appelle XSS basé sur DOM .

Le "Cross-Origin Resource Sharing" ou CORS n'est pas la même chose que XSS, MAIS Mais si une application Web présentait une vulnérabilité XSS, un attaquant aurait un accès de type CORS à toutes les ressources de ce domaine. En bref, CORS vous permet de contrôler la façon dont vous brisez le système d'accès à l'Internet. politique de même origine de sorte que vous n'avez pas besoin d'introduire une vulnérabilité XSS complète.

El $.support.cors La fonction d'interrogation repose sur le Access-Control-Allow-Origin En-tête de réponse HTTP. Ce site pourrait être une vulnérabilité. Par exemple, si une application web a Access-Control-Allow-Origin: * sur chaque page, un attaquant aurait alors le même niveau d'accès qu'une vulnérabilité XSS. Faites attention aux pages sur lesquelles vous introduisez des en-têtes CORS, et essayez d'éviter * autant que possible.

Donc, pour répondre à votre question : NON une application web n'a jamais besoin d'introduire une vulnérabilité XSS car il existe des moyens de contourner le POS tels que CORS/jsonp/cross domain proxies/ contrôle d'accès-origine .

11voto

bjornd Points 11457

Cela ne peut être utile que si CORS est activé dans votre navigateur, mais il n'est pas encore pris en charge par jQuery :

Pour activer les requêtes interdomaines dans des environnements qui ne prennent pas encore en charge les cors mais autorisent les requêtes XHR interdomaines (gadget Windows, etc.), définir $.support.cors = true ;. CORS WD

Le simple fait de mettre cette propriété à true ne peut pas causer de vulnérabilité de sécurité.

3voto

Tim Points 134

Lorsqu'un pirate est capable d'injecter du code script pour changer les requêtes vers un autre domaine, il est également capable d'activer ce drapeau javascript dans le script.

Le fait que ce drapeau soit activé ne change donc pas grand-chose à ce stade de l'intrusion.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X