web-dev-qa-db-fra.com

Comment garder les clés API secrètes lors de l'utilisation de Javascript côté client?

Par exemple, consultez ce plugin Facebook .

Côté client, la clé API est clairement visible. Qu'est-ce qui empêche un autre utilisateur d'obtenir cette clé et d'utiliser cette fonctionnalité sur un autre site?

J'ai pensé qu'une implémentation très naïve serait de vérifier le domaine d'où provient la demande, mais des choses comme celle-ci sont faciles à simuler.

Si je devais créer quelque chose de similaire, comment pourrais-je procéder pour sécuriser le processus d'authentification?

Je veux que la majeure partie de ce travail soit côté client, bien qu'une certaine forme d'authentification du serveur soit certainement requise Tout lien ou conseil serait grandement apprécié.

Mise à jour

Similaire question sur les clés API que j'ai trouvé utiles.

47
Finglas

En trois mots: validation côté serveur. FB lui-même génère une erreur lorsque vous utilisez une clé incorrecte pour le site donné. La clé API n'est pas censée être secrète (contrairement à la clé secrète).

12
Piskvor

Je ne l'ai pas fait moi-même, mais je sais que le type d'attaque qui vous inquiète s'appelle Cross-site Request Forgery (CSRF). Le article Wikipedia sur qui donne quelques conseils sur la façon de l'empêcher.

3
GregL