IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Gestion de compte


Sujet :

NodeJS

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 37
    Points : 25
    Points
    25
    Par défaut Gestion de compte
    Bonjour.
    Je suis intéressé par le développement de jeu vidéo en JS.

    En voyant les jeux du style BrowserQuest (browserquest.mozilla.org), je me demande s'il est possible de sauvegarder l'avancée d'un personnage dans une base de données genre MySQL sans que l'avancée puisse être modifier par le joueur ?

    BrowserQuest utilise le LocalStorage. Ce qui m'ennuie dans cette solution, c'est que c'est facilement modifiable par l'utilisateur. Je voulais savoir si NodeJS permettait de stocker les informations relatives à un personnage afin de sauvegarder son avancée dans le jeu (comme avec le local storage) mais sans que le joueur puisse modifier les informations concernant son personnage.

    En résumé, serait-il possible pour le jeu BrowserQuest de stocker les données concernant les personnages sans qu'elles puissent être modifier par les joueurs.


    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Alors d'abord, il faut bien distinguer ce qui se passe côté client de ce qui se passe côté serveur.

    Stocker des données côté client via LocalStorage a quelques avantages tels que conserver ces données hors ligne ou éviter des appels réseaux. Cependant comme tu l'as signalé, les données sont effectivement accessible par l'utilisateur puisque stockées sur son poste. Après je n'ai jamais eu l'occasion de manipuler cette techno donc je ne sais pas s'il existe des mécanisme de sécurité empêchant l'utilisateur d'écrire ou de visualiser les données.

    Node.js est une techno server-side. Le stockage des données via Node.js se fera donc côté serveur. Il existe des drivers Node.js permettant d'accéder à la plupart des bases de données connues. Si tu veux stocker et accéder à des données de manière très rapides, je te conseille de t'orienter vers des solutions NoSQL stockant des données JSON telles que MongoDB.

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    Merci pour vos réponses.
    En revanche ça ne répond pas vraiment à ma question.

    Le problème vient de la sécurité et non du stockage même des données.
    Je veux trouver une solution pour stocker des données côté serveur (ça vous m'avez répondu) mais de manière à ce que l'utilisateur ne modifie pas les données.

    Exemple : Un joueur s'inscrit sur le site, il crée un personnage. Ce personnage est stocké en bdd. Une fois dans le jeu, il tue un monstre et gagne de l'xp. Une fois qu'il arrive à un certain nombre d'xp il level up. L'xp est stocké en bdd. Le problème c'est que si il trouve dans le code js côté client, l'événement qui va lui donner de l'xp, il peut level up autant qu'il veut... Je veux empêcher ça.

    Merci d'avance.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut,

    OK, je comprend mieux.

    Il n'est pas possible d'empêcher l'utilisateur d'envoyer une requête au serveur s'il a compris comment la formater ou quelles informations passer. Du moins je pense. Donc ce qu'il faut c'est étudier ton architecture de manière à être en mesure, côté serveur, de t'assurer de la légitimité d'une requête.

    Pour l'exemple que tu donnes, il ne devrait pas y avoir de requête pour augmenter l'xp du personnage. Il va y avoir une action, et, côté serveur, tu analyse cette action et décide de son influence sur l'xp du perso.

    Prenons un exemple : ton personnage augmente son XP en découvrant des zones sur une map. Chaque zone est associée à un ID. Quand un personnage découvre une zone, une événement est émis au serveur via websocket par exemple : "area discovered", avec l'ID de la zone en paramètre. Toi côté serveur, tu vas augmenter son XP.
    L'utilisateur peut cependant essayer d'envoyer l'événement avec des ID de zone au hasard ou avec des ID de zones communiqués par d'autres joueurs ayant découvert les zone et espionné les événements émis au serveur (et déduit par ce moyen les ID). Il peut aussi les trouver dans le code (=> utilises un obfuscateur pour lui rendre la tache plus difficile).
    Dans ce cas, tu peux tout simplement vérifier que la position du joueur se trouve bien dans la zone au moment de l'émission de l'événement. Tu peux aussi générer les ID des zones aléatoirement pour chaque joueur ou à chaque chargement du jeu.

    Je pense qu'il faut étudier ton architecture de manière à être en mesure de pouvoir vérifier si chaque événement sensible est émis par le jeu ou s'il est généré. Pour chacun, il faut essayer de voir comment on peut les contourner et comment contrecarrer ça.

    Après, c'est le problème du jeu du chat et de la souris. T'auras toujours des mecs qui vont trouver des "failles", des cas que t'auras pas prévu pour contourner les mécanismes du jeu, et faudra patcher pour corriger. C'est comme ça pour tous les jeux et même tous les systèmes de sécurité en général.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    J'avais pensé à une solution de ce genre, mais ton post m'a vraiment éclairé sur le sujet.

    Je vais réfléchir à des solutions techniques afin de contrer les possibilités de modification par l'utilisateur. Si j'arrive à un résultat concluant, je me lancerai dans le développement d'un petit jeu

    Merci beaucoup d'avoir pris le temps de m'aider

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion des comptes
    Par Clorish dans le forum Réseau
    Réponses: 2
    Dernier message: 18/09/2006, 15h48
  2. Outil de gestion de comptes e-mail
    Par trattos dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 28/06/2006, 17h51
  3. [Modèle Relationnel] Gestion de comptes bancaires.
    Par Elmilouse dans le forum Schéma
    Réponses: 3
    Dernier message: 31/08/2004, 16h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo