C'était sur un site Web sur lequel je devais travailler. Il me semble que c'est une idée horrible, mais j'espérais obtenir d'autres commentaires avant de leur dire que c'était le cas.
var url = 'https://www.otherdomain.com/magic_php_file.php';
document.write('<script>jQuery( "#div" ).load( "' + url + '" );<\/script>’);
Document.write se produisant sur un domaine différent de otherdomain.com, j'ai donc l'impression qu'il s'agit d'un trou de script intersite créé par ceux-ci. Mes préoccupations concernaient XSS et l'accès aux cookies. Quelqu'un d'autre peut-il m'aider à comprendre tout problème autre que ceux-ci et utiliser document.write & load is bad. Merci!
Techniquement, vous pouvez dire qu'il s'agit d'un script intersite, mais il ne s'agit pas d'une attaque ni d'un trou à travers lequel attaquer, car rien dans lequel l'utilisateur a entré n'est utilisé pour changer ce qui est inséré.
Le code insère le résultat obtenu de l'autre domaine dans un div du domaine en cours. Il y a une implication de confiance ici, ce qui signifie que ce qui est retourné par otherdomain.com
de magic_php_file.php
peut être inséré dans le div avec id #div
.
On peut imaginer que cela a été fait pour charger de la publicité ou autre contenu intégré. Ce n'est pas totalement différent que d'utiliser Google Adsense par exemple: Google vous donne un script à insérer dans votre code HTML qui charge un autre script à partir d'un domaine Google et s'exécute sur votre page.
Je pense que, puisque l'exemple utilise une demande AJAX pour obtenir et charger le fichier PHP, les cookies du fichier PHP sont chargés sur le même domaine, qui donne aux cookies chargés via le fichier externe PHP l'accès aux cookies sur le site local.
Étant donné que le JS appelle le fichier multi-domaines PHP dans le navigateur, il doit être bloqué par la règle de même origine. Si les en-têtes CORS du fichier PHP sont définis pour autoriser, la règle de la même origine sera enfreinte pour charger le fichier PHP. Le JS pourrait alors transmettre les cookies du site local au script externe PHP.
Beaucoup de bonnes informations dans cette réponse: