web-dev-qa-db-fra.com

URL étrange ajoutée "# _ = _"

Duplicata possible:
Play Framework ajoutant # = pour rediriger après l'authentification Facebook via OAuth2?

Quelqu'un d'autre a-t-il vu cela se produire?

Je construis une application de canevas Facebook en utilisant le Facebook PHP SDK, et du Javascript.
Maintenant, lorsque j'introduis l'utilisateur à travers le flux d'authentification OAuth), j'ai remarqué que l'URL du navigateur est automatiquement ajoutée avec ce "#_=_", donc mon URL commence à ressembler à ceci:

http://apps.facebook.com/xxxxxxxxxxxx/#_=_

et lorsque je redirige vers la page de profil de l'application, l'URL est la suivante:

http://www.facebook.com/apps/application.php?id=xxxxxxxxxxxx#_=_

Je redirige en utilisant

echo "<script type='text/javascript'>top.location.href='$appcanvasurl';</script>"

à l'URL du canevas, et

echo "<script type='text/javascript'>top.location.href='$appprofurl';</script>"

pour la page de profil de l'application.

Alors pourquoi est-ce #_=_ être ajouté?

Mise à jour:

Selon ce bug sur le tracker , c'est par conception, et en donnant une valeur pour le redirect_uri ne change rien à cela.

Et selon la réponse officielle de Facebook sur cette page (doit être connecté à Facebook pour voir le message):

Cela a été marqué comme "par conception" car cela évite une vulnérabilité de sécurité potentielle.

Certains navigateurs ajouteront le fragment de hachage d'une URL à la fin d'une nouvelle URL vers laquelle ils ont été redirigés (si cette nouvelle URL n'a pas elle-même un fragment de hachage).

Par exemple, si example1.com renvoie une redirection vers example2.com, un navigateur allant vers example1.com # abc ira vers example2.com # abc, et le contenu du fragment de hachage de example1.com sera accessible à un script sur example2 .com.

Puisqu'il est possible d'avoir un flux d'authentification redirigé vers un autre, il serait possible d'avoir des données d'authentification sensibles d'une application accessible à une autre.

Ceci est atténué en ajoutant un nouveau fragment de hachage à l'URL de redirection pour empêcher ce comportement de navigateur.

Si l'esthétique ou le comportement côté client de l'URL résultante sont préoccupants, il serait possible d'utiliser window.location.hash (ou même une redirection côté serveur de votre choix) pour supprimer les caractères incriminés.

34
bool.dev

Voir ceci: https://developers.facebook.com/blog/post/552/

Modification du comportement de redirection de session

Cette semaine, nous avons commencé à ajouter un fragment #_=_ au redirect_uri lorsque ce champ est laissé vide. Veuillez vous assurer que votre application peut gérer ce comportement.

17
mjs