Question

Pourquoi les navigateurs appliquent la même politique d'origine à XMLHttpRequest? Il est vraiment pratique pour les développeurs, mais il semble qu'il ne contribue guère en fait d'arrêt pirates. Il y a des solutions de contournement, ils peuvent inclure encore javascript de sources extérieures (la puissance derrière JSONP).

Il semble comme une « caractéristique » pas à jour dans une toile qui est en grande partie reliés entre eux.

Était-ce utile?

La solution

Parce qu'un XMLHttpRequest passe des jetons d'authentification de l'utilisateur. Si l'utilisateur a ouvert une session sur example.com avec auth ou des cookies de base, puis visité attacker.com, ce dernier site pourrait créer un XMLHttpRequest pour example.com avec autorisation complète pour cet utilisateur et lire une page privée que l'utilisateur pourrait (alors transmettre à l'attaquant).

Parce que mettre des jetons secrets dans les pages webapp est le moyen d'arrêter simples attaques de type Cross-Site-Demande-Contrefaçon, cela signifie attacker.com pourrait prendre des actions sur la page, l'utilisateur peut à example.com sans le consentement ou l'interaction de leur. XMLHttpRequest Global est cross-site scripting mondial.

(Même si vous aviez une version de XMLHttpRequest qui ne passe pas l'authentification, il y a encore des problèmes. Par exemple, un attaquant pourrait faire des requêtes vers d'autres machines non publiques sur votre intranet et lire tous les fichiers qu'il peut télécharger à partir de leur qui ne peuvent être destinés à la consommation publique. balises <script> souffrent déjà d'une forme limitée de ce type de vulnérabilité, mais les réponses entièrement lisibles de XMLHttpRequest fuirait tous les types de fichiers au lieu de quelques unes malheureusement de fabrication artisanale qui peuvent analyser en JavaScript .)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top