Supposons que votre site Web dispose d'une GetUser
méthode Web:
http://www.example.com/User/GetUser/32
qui renvoie une réponse JSON:
{ "Name": "John Doe" }
Si cette méthode n'accepte que les requêtes POST, le contenu ne sera renvoyé au navigateur que si une requête AJAX est effectuée à l' http://www.example.com/User/GetUser/32
aide de la méthode POST. Notez qu'à moins que vous n'ayez implémenté CORS , le navigateur protégera les données des autres domaines faisant cette demande au vôtre.
Cependant, si vous avez autorisé les requêtes GET à ce moment-là et que vous faites une requête AJAX similaire à celle ci-dessus avec GET au lieu de POST, un utilisateur malveillant pourrait inclure votre JSON dans le contexte de son propre site en utilisant une script
balise dans le HTML. par exemple sur www.evil.com
:
<script src="http://www.example.com/User/GetUser/32"></script>
Ce JavaScript devrait être inutile www.evil.com
car il ne devrait y avoir aucun moyen de lire l'objet retourné par votre méthode web. Cependant, en raison de bugs dans les anciennes versions de navigateurs (ex: Firefox 3), il est possible que des objets prototypes JavaScript soient redéfinis et permettent www.evil.com
de lire vos données renvoyées par votre méthode. C'est ce qu'on appelle le détournement JSON.
Voir cet article pour quelques méthodes pour éviter cela. Cependant, ce n'est pas un problème connu avec les dernières versions des navigateurs modernes (Firefox, Chrome, IE).