0
votes

Comment sécuriser la base de données sans authentification?

Je crée un jeu d'unité où je souhaite avoir une liste globale de la top 50 Top 50 avec des noms d'utilisateur. J'utilise la base de données Firebase Realtime. L'utilisateur n'a pas besoin d'authentifier. Je ne suis pas aussi familier avec la sécurité de la base de données et joli débutant avec ce concept. J'utilise l'API de repos du magasin d'actifs Unity, car il était assez facile d'envoyer et d'obtenir des données de la base de données.

Comment puis-je être sûr que chaque score envoyé à la base de données vient de mon application?


4 Réponses :


0
votes

Disclaimer: je ne sais rien sur Firebase

D'après ce que je peux dire, vous devrez configurer un accès pour par défaut et public de votre configuration pour indiquer à la base de données et ne peut pas accéder à votre base de données. Voici leur documentation sur Commencez avec les règles de base de données .

Dans l'accès général de la base de données, personne ne devrait connaître les détails de votre connexion à une base de données, de sorte que tous les appels ne devraient jamais venir de votre application.


0 commentaires

1
votes

Si vous n'utilisez pas d'authentification Firebase, vous ne pouvez pas restreindre qui peut accéder à votre base de données. Tout le monde sera en mesure de publier une requête, et ils peuvent même le faire à l'aide de Base de données en temps réel API de repos . Tout ce qu'ils ont à savoir sont le nom de votre projet.

Même si vous utilisez une authentification Firebase, tout le monde peut toujours authentifier et accéder à la base de données en dehors de votre application en utilisant d'autres API publiques.


2 commentaires

Comment puis-je implémenter ma base de données alors afin de pouvoir être sûr que chaque score est légitime?


Il ne s'agit pas de la conception de la base de données. Il s'agit de vous assurer que votre côté serveur contrôle toute la logique devrait être sécurisé. Le fait est que vous ne pouvez pas faire confiance à l'application clientèle du tout, car il peut être compromis. Donc, si votre logique de notation est calculée sur le client, elle est piraillable, et c'est ça.



1
votes

Mon expérience est que vous ne pouvez pas arrêter les "utilisateurs" dédiés de tricher dans les meilleurs scores. J'ai fait une petite poignée de jeux triviaux pour Windows Phone avec Global Top 50. Même si votre jeu est impopulaire et que vous obtenez votre code, et vous êtes sur une plate-forme impopulaire, et vous cryptez votre trafic réseau: quelqu'un va jailbreaker leur Téléphone, décompilez votre application et injecte son propre score élevé dans votre jeu avant que des scores élevés soient envoyés à la liste mondiale. La seule façon dont je suis venu de lutter contre cela était de garder une trace des sessions de jeu - le serveur - pour vous assurer que leurs scores étaient théoriquement possibles en fonction de la durée de vie.


0 commentaires

2
votes
  1. Ajouter un utilisateur dédié avec mot de passe à votre base de données

  2. Quelque part dans votre application, ajoutez ces informations d'identification par ex. dans un scriptableObject / dans certains composants

  3. utilise toujours ces informations d'identification pour authentifier

    Notez que votre application peut toujours être décompilée et trichée ainsi.

    Vous pouvez au moins le rendre plus difficile en cryptant les données, etc.

    Le seul moyen vraiment autour est d'avoir un compte et un serveur de session pour assurer qu'un utilisateur est verrouillé avec une session valide.


0 commentaires