L'apiKey dans cet extrait de configuration identifie simplement votre projet Firebase sur les serveurs de Google. Le fait que quelqu'un la connaisse ne constitue pas un risque pour la sécurité. En fait, il est nécessaire qu'il la connaisse pour qu'il puisse interagir avec votre projet Firebase. Ces mêmes données de configuration sont également incluses dans chaque application iOS et Android qui utilise Firebase comme backend.
En ce sens, elle est très similaire à l'URL de la base de données qui identifie la base de données back-end associée à votre projet dans le même extrait : https://<app-id>.firebaseio.com
. Voir cette question pour savoir pourquoi cela ne constitue pas un risque pour la sécurité : Comment restreindre la modification des données de Firebase ? L'utilisation des règles de sécurité côté serveur de Firebase pour garantir que seuls les utilisateurs autorisés peuvent accéder aux services dorsaux.
Si vous voulez apprendre comment sécuriser l'accès à toutes les données de vos services backend Firebase, lisez la documentation sur Règles de sécurité de Firebase . Ces règles contrôlent l'accès au stockage des fichiers et à la base de données, et sont appliquées sur les serveurs Firebase. Ainsi, peu importe si c'est votre ou le code de quelqu'un d'autre qui utilise vos données de configuration, il ne peut faire que ce que les règles de sécurité lui permettent de faire.
Pour une autre explication de ce à quoi Firebase utilise ces valeurs, et pour lesquelles vous peut définir des quotas, voir la documentation de Firebase sur l'utilisation et la gestion des clés API .
Si vous souhaitez réduire le risque de soumettre ces données de configuration au contrôle de version, envisagez d'utiliser la fonction Auto-configuration du SDK pour l'hébergement Firebase . Les clés seront toujours affichées dans le navigateur dans le même format, mais elles ne seront plus codées en dur dans votre code.
Mise à jour (mai 2021) : Grâce à la nouvelle fonctionnalité appelée Firebase App Check Avec la nouvelle version de Firebase, il est désormais possible de limiter l'accès aux services dorsaux de votre projet Firebase aux seuls services provenant des applications iOS, Android et Web enregistrées dans ce projet spécifique.
Vous souhaiterez généralement combiner cette mesure avec la sécurité basée sur l'authentification de l'utilisateur décrite ci-dessus, de manière à disposer d'un autre bouclier contre les utilisateurs abusifs qui faire utiliser votre application.
En combinant App Check et les règles de sécurité, vous disposez à la fois d'une protection étendue contre les abus et d'un contrôle précis des données auxquelles chaque utilisateur peut accéder, tout en permettant un accès direct à la base de données à partir du code de votre application côté client.
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é.