2009-09-27 4 views
1

Je veux héberger le login Yahoo Open-ID dans un iframe. Cependant, dès que la page se charge yahoo il exécute le code JavaScript suivant:Empêcher Yahoo OpenID de rediriger la page

<script type="text/javascript">if(top == self) 
{ document.write("") } else 
{ top.location.href = "http://www.yahoo.com" }</script> 

En d'autres termes, il redirige la page entière (et pas seulement l'iframe). Comment puis-je empêcher cette redirection (toutes les questions juridiques de côté!)?

Répondre

1

Je ne pense pas que c'est comme ça que vous êtes supposé l'implémenter correctement et que le code est là pour une raison. Avez-vous traversé http://developer.yahoo.com/openid/?

+0

Je sais ce que je suis censé faire. Je veux juste le faire différemment. – usr

+0

Peut-être y a-t-il une raison pour laquelle vous devez le faire d'une certaine façon? – phoebus

+2

Honnêtement ... vous ne devriez pas vouloir et ne pouvez pas modifier le code dans un domaine externe qui est hébergé dans votre iframe. –

7

Yahoo a absolument raison de vous arrêter de le faire; tous les fournisseurs OpenID devraient. Mettre OpenID dans un cadre signifie qu'aucune barre d'adresse visible ne garantit que le formulaire de connexion OpenID provient réellement de Yahoo; En fait, on dirait que ça vient de votre site. Un utilisateur essayant d'éviter d'être phishing devrait jamais entrer son mot de passe dans un tel formulaire. L'intérêt d'OpenID est qu'il peut garantir votre identité sans vous obliger à donner votre mot de passe à chaque site auquel vous voulez vous connecter.

Donc, non, vous ne pouvez pas l'empêcher.

+0

Je pense que vous avez raison que les fournisseurs devraient empêcher cela. Maintenant, changer de perspective pour moi: il se trouve que je veux ce qu'ils ne veulent pas. Aide-moi juste à le faire. Où est le mal? – usr

+0

Cela ne peut pas être fait, et si cela pouvait être fait, ce serait un trou de sécurité que Yahoo aurait à réparer. Ou vous voulez que je pirate les serveurs de Yahoo pour vous et le change? :-) – bobince

+0

Si ma recherche est vide je reviendrai à votre offre ;-) – usr

0

Avez-vous essayé d'ajouter ceci à votre cadre extérieur: <body onbeforeunload="return 'click cancel';"></body>