El Guide Firebase Web-App indique que je devrais mettre le apiKey
dans mon Html pour initialiser Firebase :
// TODO: Replace with your project's customized code snippet
<script src="https://www.gstatic.com/firebasejs/3.0.2/firebase.js"></script>
<script>
// Initialize Firebase
var config = {
apiKey: '<your-api-key>',
authDomain: '<your-auth-domain>',
databaseURL: '<your-database-url>',
storageBucket: '<your-storage-bucket>'
};
firebase.initializeApp(config);
</script>
Ce faisant, le apiKey
est exposé à chaque visiteur.
Quel est le le but de cette clé et est-ce que c'est vraiment destiné à être public ?
1 votes
L'utilisateur Christophe Quintard avait ajouté un lien vers un article très utile contenant des informations supplémentaires sur la sécurité des API Firebase, je le publie donc ici : javebratt.com/hide-firebase-api (Le commentaire va disparaître parce qu'il est attaché à la réponse d'un autre utilisateur qui est signalé pour être supprimé en raison de sa mauvaise qualité).
16 votes
Je tiens simplement à souligner que ce n'est pas parce que ce cadre particulier n'a pas de problème pour exposer son API que les autres cadres sont d'accord. Je ne voudrais pas que quelqu'un sorte de cet article avec l'idée que "c'est bien d'exposer les clés d'API" en général.
4 votes
Vous exposez les clés sans problème. Pour le rendre plus sûr, vous pouvez le restreindre à un domaine spécifique dans la production afin que personne d'autre ne puisse faire un appel API à partir d'un nom de domaine aléatoire. Pour plus de sécurité, supprimez localhost de l'application de production.
6 votes
Je ne pense pas que supprimer localhost de votre liste blanche de référents va faire quoi que ce soit, sauf rendre les tests plus difficiles. Cette configuration n'est pas comme une liste blanche d'adresses IP ; pensez-y plutôt comme une configuration CORS. La façon dont Firebase fonctionne est que ces routes API sont appelées directement par les clients, elles ne sont pas proxiées. C'est pourquoi votre page web a besoin de la clé API. Si un mauvais acteur veut appeler vos routes API à partir de Postman, votre liste blanche de référents ne va pas l'arrêter. Elle n'est utile que pour empêcher d'autres sites publics de s'approprier vos serveurs.
2 votes
Si vous voulez empêcher un adversaire d'abuser de votre API par CURL, vous devez mettre en œuvre d'autres contre-mesures comme l'authentification et la limitation du débit. Il s'agit d'une API tournée vers l'Internet. C'est une bonne chose ! Pas un bug, une fonctionnalité.