Pourquoi la croix-domaine Ajax est un problème de sécurité?

Pourquoi il a été décidé que l'utilisation de XMLHTTPRequest pour faire du XML appels ne devraient pas faire appelle, au-delà de la limite du domaine? Vous pouvez les récupérer en JavaScript, les images, les CSS, les iframes, et juste au sujet de tout autre contenu que je peux penser à d'autres domaines. Pourquoi l'Ajax requêtes HTTP sont pas autorisés à franchir les limites du domaine? Il semble étrange limitation de mettre, en considérant la seule façon que je considère que c'est abusé, serait si quelqu'un venait à injecter du code Javascript dans la page. Toutefois, dans ce cas, vous pouvez simplement ajouter une img, script, ou de l'élément iframe pour le document pour obtenir de demander à la troisième partie de l'URL et de l'envoyer au serveur.

[Modifier]

Certaines réponses soulignent les raisons suivantes, faisons le point sur les raisons pour lesquelles ils ne créent pas de raison majeure pour interdire ce.

XSRF (Cross Site Request Forgery, aussi connu comme CSRF, XSRF)

Votre peut faire XSRF attaques sans l'aide de ce tout. En règle générale, XMLHTTPRequest n'est pas du tout, tout simplement parce que c'est tellement difficile de faire un XMLHTTPRequest dans une manière qui est compatible avec tous les principaux navigateurs. Il est beaucoup plus facile de simplement ajouter une balise img pour l'URL si vous voulez charger votre URL.

L'affichage vers le site tiers

<script type="text/javascript">
  $.post("http://some-bank.com/transfer-money.php", 
         { amount: "10000", to_account: "xxxx" })
</script>

Peut être accompli grâce à

<body onload="document.getElementById('InvisbleForm').submit()"
    <div style="display:none">
        <form id="InvisbleForm" action="http://some-bank.com/transfer-money.php" method="POST">
            <input type="hidden" name="amount" value="10000">
            <input type="hidden" name="to_account" value="xxxxx">
        </form>
    </div>
</body>

JPunyon: pourquoi voulez-vous quitter la vulnérabilité dans une nouvelle fonctionnalité

Vous ne créent pas plus d'insécurité. Vous êtes juste de pénaliser les développeurs qui veulent l'utiliser pour de bon. Toute personne qui souhaite utiliser cette fonctionnalité pour le mal (aka génial) pourrait simplement utiliser une autre méthode de le faire.

Conclusion

Je suis marquant la réponse de bobince que correcte car il a souligné le problème critique. Parce que XMLHTTPRequest permet à la poste, avec les identifiants de connexion ("cookies") pour le site de destination, et de lire les données envoyées à partir du site, avec l'envoi de la personnes des informations d'identification, vous pouvez orchestrer un peu de javascript qui permettrait de présenter une série de formes, y compris les formulaires de confirmation, complet avec toutes les clés aléatoires générés qui ont été mis en place pour tenter d'empêcher un XSRF. De cette façon, vous pouvez parcourir le site cible, comme une banque, et la banque du serveur web serait pas en mesure de dire que ce n'était pas seulement un utilisateur régulier de soumettre toutes ces formes.

  • la modification de ces attaques parce qu'ils sont en réalité des attaques xsrf. xss lorsque vous injectez de script sur la légitime pages du site
  • êtes-vous ici? Je veux éditer votre message pour le rendre plus clair. Dans certains cas, je ne suis pas entièrement comprendre votre anglais. Allez-vous revoir?
  • Les modifications de regarder bon pour moi. Agréable de voir cette vieille question est toujours vivant et bien.
  • J'ai décidé d'écrire ma propre réponse. Pouvez-vous, s'il vous plaît, prendre un coup d'oeil?
  • "Parce que XMLHTTPRequest permet à la poste, avec les identifiants de connexion ("cookies") pour le site de destination, et de lire les données envoyées à partir du site". Ensuite attaquant, il suffit d'utiliser par exemple l'en-tête ("Access-Control-Allow-Origin: *') et peut lire les données envoyées à partir du site et soumettre des formulaires et etc. Ou misunderdstand quelque chose ?
InformationsquelleAutor Kibbee | 2009-01-21