Ce problème de sécurité doit être attribué à JavaScript. Généralement, le serveur A est configuré pour ne pas permettre à la machine B d'un autre domaine d'exécuter ajax sur B pour appeler des ressources sur le serveur A. Voici un exemple simple de risque de sécurité :
En supposant qu'Ajax soit accessible depuis un domaine, je peux écrire en Ajax sur ma propre machine pour demander des ressources dans diverses applications Web de Google. Par exemple, j'utilise d'abord Firefox pour étudier les adresses et les paramètres d'un grand nombre de requêtes ajax par GMail pendant. le processus de connexion, et je peux obtenir le processus de vérification des cookies de l'utilisateur. Ensuite, écrivez js pour obtenir les cookies des autres utilisateurs dans tous les domaines, afin que vous puissiez contourner le mot de passe GMail de l'utilisateur et vous connecter aux boîtes aux lettres GMail d'autres personnes
avec les restrictions inter-domaines ajax, est-il vraiment impossible de faire de l'ajax pour interrompre l'accès au domaine ?
Il est vrai qu'ajax ne peut pas casser le domaine, mais nous pouvons l'implémenter via le relais. Le principe dit du proxy est très simple. Vous pouvez configurer votre propre conteneur entre votre propre js et les ressources du serveur distant A. Vous pouvez l'utiliser. asp, php, java, .net, etc. Un langage web dynamique possible est asp à titre d'exemple (obtenir la liste d'amis d'un utilisateur sur le site Redekuai et renvoyer le format de données xml)
<%
p = " http://redekuai.com/api/user_friends_xml/funy "
Réponse.BinaryWrite ZQcnGet(p)
Réponse.Flush
Fonction ZQcnGet(url)
Définir la récupération = CreateObject("Microsoft.XMLHTTP")
Avec récupération
.Ouvrez "Obtenir", url, Faux, "", ""
.Envoyer
ZQcnGet = .ResponseBody
Terminer par
Définir la récupération = Rien
Fonction de fin
%>
Enregistrez ce code sous proxy.asp, puis placez-le dans IIS. À ce stade, vous pouvez trouver une machine pour écrire du js et utiliser ajax pour demander proxy.asp. En fin de compte, cela équivaut à réaliser un accès au domaine ajax. .
L'exemple de code PHP est plus simple
echo file_get_contents(" http://redekuai.com/api/user_friends_xml/funy "");
?>
Remarque : la version php doit être >= 4.3.0.
Voici un exemple de code pour la version asp.net (C#) :
using System.Net ;
en utilisant System.IO ;
en utilisant System.Text ;
ajaxpages de classe partielle publique : System.Web.UI.Page
{
protected void Page_Load (expéditeur de l'objet, EventArgs e)
{
WebRequest wr = WebRequest.Create(" http://redekuai.com/api/user_friends_xml/funy ");
WebResponse wres = wr.GetResponse ();
Encodage resEncoding = System.Text.Encoding.GetEncoding("utf-8");
StreamReader sr = new StreamReader(wres.GetResponseStream(), resEncoding);
chaîne html = sr.ReadToEnd();
Réponse.Write(html);
sr.Close();
wres.Close();
}
}
Respectivement proxy.asp proxy.php proxy.aspx
Alors, quelle est l'importance pratique de faire du bon travail en tant que proxy et d'autoriser l'accès au domaine js aux ressources de sites Web distants sur votre propre machine générale (pas sur un serveur Web) ?
Vous savez, la technologie Internet actuelle est entrée dans l'ère absolue du Mashup. Il y a plus de 2 000 entreprises aux États-Unis qui comptent sur Facebook APP pour survivre. Est-il vrai que ce type de chaîne industrielle étrangère ne peut pas être développée en Chine ? Il faut savoir qu'Internet deviendra également l'infrastructure de la Chine dans 5 ans. Il existe déjà des sites Web2.0 relativement bons qui ouvrent des API (encore une fois, chauffent rapidement) ou se préparent à les ouvrir.