2010-11-18 4 views
1

J'ai <script src="bla"></script> qui peut être chargé dans plusieurs domaines. Je veux savoir s'il existe un moyen de contrôler les domaines sur lesquels il sera chargé. Pour clarifier: Mon script est rendu sur le serveur, donc je peux retourner une chaîne vide si le domaine demandé n'est pas valide.Comment empêcher le chargement de script dans un domaine différent

Ceci est pour empêcher d'autres sites d'intégrer mon script.

Merci!

Répondre

2

Vous pouvez vérifier le referrer, mais ce paramètre est réglé par le navigateur Web de l'utilisateur et n'est pas fiable à 100%.

Je ne pense pas qu'il existe un moyen de détecter à 100% quel domaine a intégré le script.

+0

Je ne peux pas penser non plus. Vérifier les en-têtes de la requête est probablement ce que vous pouvez faire de mieux. Vous pouvez également rechercher des éléments autres que le référent, comme les clés/valeurs définies par l'utilisateur. – Andy

0

Vous ne trouvez pas le domaine sur lequel la requête est en cours?

Voir http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.host.aspx, vous pouvez l'obtenir via HttpContext.Current.Request.

Un exemple:

if (HttpContext.Current.Request.Host.Containts("fred.com")) { 
    return; // Or you could do a Response.Write and Flush 
} 

Vous pouvez également intégrer le code de script dans une fermeture et simplement vérifier au début et retour:

(function() { 

    if (location.hostname == "....") return; 

    ...more code here... 

})(); 
+0

JS n'est pas une option, car il peut être piraté assez facilement. – Himberjack

+0

Vous ne l'avez pas mentionné dans la question. Vérifiez la propriété Host de la demande côté .NET - http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.host.aspx, vous pouvez obtenir le HttpWebRequest en utilisant HttpContext.Current.Request. – Lloyd

0

Vous pouvez utiliser le même mécanisme utilisé pour empêcher hotlinking images- mod_rewrite sur apache, ou un filtre ISAPI sur iis, par exemple

Soit déposer la demande si elle provient d'un autre domaine, ou d'envoyer un script castré .

Questions connexes