Question

Je suis sûr que la réponse de ce que je vais poser est peut-être non, mais quelqu'un peut me donner une idée différente si je demande de toute façon.

Je développe un panneau de contrôle qui va chercher l'information sous forme d'un webservice 3ème partie via un appel API. Je pourrais faire un appel avec AJAX qui renvoie le résultat en millisecondes sur le navigateur, mais je serais d'exposer l'API clé de ce service. Bien que ce soit un intranet avec accès restreint, un employé pourrait renifler et obtenir la clé API privée avec seulement regarder la fenêtre d'activité de Safari par exemple. Les employés sont dignes de confiance, mais je ne veux pas risquer ma sécurité de développement uniquement sur la confiance.

Ce que je fais est maintenant AJAXing un php qui fait l'appel avec un appel CURL, mais il faut environ 2 ou 3 secondes pour le faire: pas le PHP lui-même, l'hébergement partagé allant au 3ème serveur parti et à l'arrière.

Y at-il un moyen de rendre le navigateur faire la demande directement à l'API sans exposer la clé privée? Je pense que, par définition, il est impossible, mais je partage le scénario alors peut-être que quelqu'un a une meilleure idée (je suis en train d'éviter les informations cache parce que modifications extraites par la seconde)

Ne pas être la question que j'ai un doute lié à ceci: Si je fais l'appel API par CURL sous Mac OS Terminal ou dans un local Apache prend comme 12 secondes à chaque fois pour obtenir le résultat, mais un navigateur dans exactement le même ordinateur et connexion il obtient en millisecondes. Je ne suis pas très familier avec la façon dont CURL fonctionne en interne mais soit CURL est un mécanisme lent ou ne fonctionne pas bien dans mon Mac.

Merci

Était-ce utile?

La solution

Non, puisque le code javascript est envoyé et exécuté sur la machine du client, il n'y a aucun moyen est de ne pas exposer la clé API d'une certaine manière. Chiffrement / obscurcissant il serait inutile, en tant qu'utilisateur bien informé pourrait simplement utiliser un en-tête spectateur / renifleur de paquets pour extraire la clé de texte brut à partir des demandes de l'API de toute façon.

La seule façon de ne pas exposer la clé de l'utilisateur est l'utilisateur laisse pas toujours se emparer, ce qui signifie mandatement les demandes.

Autres conseils

Non, lorsque le navigateur demande au service, l'utilisateur peut toujours renifler la clé. Donc, pour utiliser PHP comme proxy est une bonne solution.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top