2 votes

Authentification facebook via Client SDK - Concept de sécurité

Je crois que je ne comprends pas bien la façon dont l'interface OAuth-API de Facebook gère l'authentification. D'après ce que j'ai compris, cela fonctionne essentiellement comme suit (le client étant un téléphone Android, mon serveur étant une installation LAMP standard) : fb auth http://i.imagebanana.com/img/hvlsb2dp/fbAuth.png

Le problème est que le client peut bien sûr falsifier l'étape 3 en soumettant un mauvais ID utilisateur à mon serveur - par exemple, si mon serveur répond à la requête http://server.com/getConfidentialData.php?fbID=%FBID% et que l'utilisateur réussit à obtenir le fb-userID de quelqu'un d'autre, il pourrait simplement l'inclure dans la requête et il obtiendrait les données qui appartiennent à quelqu'un d'autre.

Si j'utilise le kit de développement PHP, comment peut-il savoir si mon utilisateur est connecté ou non à l'application Android ?

C'est comme ça que c'est censé fonctionner, ou j'ai raté quelque chose ?

Merci, David.

1voto

Daren Points 1759

La seule vraie solution :

Dès lors que vous disposez d'un serveur contenant des données privées d'utilisateurs et que tout n'est pas sur Facebook, vous devez procéder à la connexion côté serveur, qui n'est pas difficile à mettre en œuvre une fois que vous avez compris le flux.

Vérifiez le diagramme de Facebook et suivez les directives qu'ils fournissent dans cet exemple et vous êtes prêt à partir.

https://developers.facebook.com/docs/howtos/login/server-side-login/

0voto

Daren Points 1759

J'ai exactement le même problème... Et la même sensation, mais puisque vous n'avez pas de réponses je vais vous faire le tour de ce que j'ai trouvé.

J'ai conçu la solution suivante :

J'envoie à mon serveur l'identifiant fb, son e-mail (pour l'identifier dans mon serveur) et son jeton d'accès (le tout via https comme s'il s'agissait d'un appel de connexion spécial).

Depuis mon serveur, j'essaie le jeton d'accès, et si celui-ci fonctionne(*), je connecte&mise à jour/enregistre l'utilisateur sur mon serveur également.

(*) J'ai défini que cela fonctionne d'abord comme si je pouvais accéder à l'e-mail de l'utilisateur, mais alors n'importe quelle autre application avec cette permission pourrait se faire passer pour mon utilisateur, donc maintenant j'étend la vie du jeton qui ne fonctionne que si le jeton vient de mon application.

J'espère que cela vous aidera, et en attendant, si quelqu'un peut avoir une vraie solution à ce problème et nous expliquer comment les autres l'évitent, je lui en serai reconnaissant.

A la vôtre !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X